查询数据库连续日期判断。
我想做一个在access中查询是否从当日开始有连续日期但是好像不对。请高手指点。yyy=Year(Date)mmm=Month(Date)ddd=Day(Date)ymd...
我想做一个在access中查询是否从当日开始有连续日期 但是好像不对。请高手指点。
yyy = Year(Date)
mmm = Month(Date)
ddd = Day(Date)
ymd1 = yyy & "年" & mmm & "月" & ddd & "日"
ymd2 = yyy & "年" & mmm & "月" & ddd - 1 & "日"
ymd3 = yyy & "年" & mmm & "月" & ddd - 2 & "日"
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续一天,如果记录存在
ss = "第一天出现"
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd2 & "'and 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续二天,如果记录存在
ss = "第二天出现"
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd3 & "'and 年月日= '" & ymd2 & "'and 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续三天,如果记录存在
ss = "第三天出现"
End If
RsAcc.Close 展开
yyy = Year(Date)
mmm = Month(Date)
ddd = Day(Date)
ymd1 = yyy & "年" & mmm & "月" & ddd & "日"
ymd2 = yyy & "年" & mmm & "月" & ddd - 1 & "日"
ymd3 = yyy & "年" & mmm & "月" & ddd - 2 & "日"
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续一天,如果记录存在
ss = "第一天出现"
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd2 & "'and 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续二天,如果记录存在
ss = "第二天出现"
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd3 & "'and 年月日= '" & ymd2 & "'and 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '连续三天,如果记录存在
ss = "第三天出现"
End If
RsAcc.Close 展开
2个回答
展开全部
首先, 如果日期是 2011年8月1日。
那么 ymd2 与 ymd3 将计算错误.
ymd1 = yyy & "年" & mmm & "月" & ddd & "日"
ymd2 = yyy & "年" & mmm & "月" & ddd - 1 & "日"
ymd3 = yyy & "年" & mmm & "月" & ddd - 2 & "日"
s1 = 0
s2 = 0
s3 = 0
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then ' 第一天,如果记录存在
s1 = 1
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd2 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '第二天,如果记录存在
s2 = 1
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd3 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '第三天,如果记录存在
s3 = 1
End If
RsAcc.Close
这里 通过 s1 s2 s3 来 判断 ss 最后的结果.
那么 ymd2 与 ymd3 将计算错误.
ymd1 = yyy & "年" & mmm & "月" & ddd & "日"
ymd2 = yyy & "年" & mmm & "月" & ddd - 1 & "日"
ymd3 = yyy & "年" & mmm & "月" & ddd - 2 & "日"
s1 = 0
s2 = 0
s3 = 0
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd1 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then ' 第一天,如果记录存在
s1 = 1
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd2 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '第二天,如果记录存在
s2 = 1
End If
RsAcc.Close
strConnAcc = "select * from 黄色高温预警 where 年月日= '" & ymd3 & "'and 站点='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then '第三天,如果记录存在
s3 = 1
End If
RsAcc.Close
这里 通过 s1 s2 s3 来 判断 ss 最后的结果.
追问
谢谢 但是还有一个问题
为什么我进行判断的时候 明明前两天都有记录
但是s2 和s3 却还是等于零???
追答
你那个 Access 里面, 年月日 那个 字段的 数据类型是什么?
是字符型的? 还是 日期型的?
如果是 日期型的话,尝试使用
"select * from 黄色高温预警 where 年月日= #" & ymd3 & "# and 站点='" & righ(ii) & " '"
看看。
因为 Access 里面, 日期比较的时候, 用 # 这个符号, 来做日期的标记的,
展开全部
access这个我不是很清楚,但是如果是在ORACLE数据库中,你可以直接使用sysdate来取系统当前时间,并且通过减1,减2来计算前2天。因为sysdate为时间函数,所以即使是8月1号减1
也不会得0,会自动计算为7月31
也不会得0,会自动计算为7月31
追问
ymd1 = Format(Date, "yyyy-mm-dd")
日期我解决了 但是下面的代码为什么longdate里面没有数据 也显示1呢
strConnAcc = "select * from 黄色高温预警 where longdate= '" & ymd1 & "'and station='" & righ(ii) & " '"
RsAcc.Open strConnAcc, ConnAcc, 1, 1
If RsAcc.RecordCount > 0 Then ' 第一天,如果记录存在
tems1 = 1
End If
RsAcc.Close
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |