VB代码写的SQL语句怎么比较日期值

q260401998 2011-06-30 10:15:01

strRstConn = "select * from tbl_abc where b_Date=cdate(2011-6-29)"
rstTemp.Open strRstConn, CnnDB, adOpenStatic, adLockPessimistic
If rstTemp.EOF = True And rstTemp.BOF = True Then
MsgBox "日期为【" & dtpRecDate.Value & "】的单据都已经打印!" & vbCrLf & "或无单据。", vbInformation, "打印单据"
Else
If rstTemp.Fields("b_Check") = 1 Then
MsgBox "单据已打印,不能再次打印!", vbInformation, "打印单据"
......

上面代码中的b_date字段在数据库中是日期型的,使用的cdate也没问题,
可是当b_date存储的值就是2011-6-29这个日期时,查询的结果还是为空的,
也就是说无论何时,eof与bof属性都为真。
不知为何,请高人指点。

我试过用convert,提示是“函数convert未定义”
我访问的数据库是access2007,程序是VB6.0
...全文
158 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
q260401998 2011-07-04
  • 打赏
  • 举报
回复
谢谢各位,结帖啦。
cnuser1 2011-07-01
  • 打赏
  • 举报
回复


jhone99 2011-07-01
  • 打赏
  • 举报
回复




strRstConn = "select * from tbl_abc where format(b_Date,'yyyy-mm-dd')='2011-06-29'"
神马都能聊 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q260401998 的回复:]
引用 5 楼 aisac 的回复:
strRstConn = "select * from tbl_abc where b_Date between '2011-06-28' and '2011-06-30'"

数据库中的b_Date是不是包含了时分秒啊?

如果包括了时分秒,我怎么去掉然后进行比对呢?
[/Quote]

select * from tbl_abc where datediff(day,b_date,'2011-06-28') = 0

你试试这样的语句,如果还出错误提示,那么就说明你的b_Date字段的数据有问题。
jhone99 2011-07-01
  • 打赏
  • 举报
回复
b_Date格式化一下

什么数据库?

q260401998 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ybh37 的回复:]
access2007 中
# ‘2011-6-29’# 表示时间,最好加#号
strRstConn = "select * from tbl_abc where cdate(b_Date)=cdate(# ‘2011-6-29’#)"
这样试试
[/Quote]
按你说的加了,可是还是不行,还是一样的提示。
q260401998 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aisac 的回复:]
strRstConn = "select * from tbl_abc where b_Date between '2011-06-28' and '2011-06-30'"

数据库中的b_Date是不是包含了时分秒啊?
[/Quote]
如果包括了时分秒,我怎么去掉然后进行比对呢?
神马都能聊 2011-07-01
  • 打赏
  • 举报
回复
strRstConn = "select * from tbl_abc where b_Date between '2011-06-28' and '2011-06-30'"

数据库中的b_Date是不是包含了时分秒啊?
咸清 2011-07-01
  • 打赏
  • 举报
回复
access2007 中
# ‘2011-6-29’# 表示时间,最好加#号
strRstConn = "select * from tbl_abc where cdate(b_Date)=cdate(# ‘2011-6-29’#)"
这样试试
饮水需思源 2011-07-01
  • 打赏
  • 举报
回复
strRstConn = "select * from tbl_abc where b_Date='2011-6-29'"
rstTemp.Open strRstConn, CnnDB,adopenkeyset,adlockreadonly
If rstTemp.recordcount=0 Then
MsgBox "日期为【" & dtpRecDate.Value & "】的单据都已经打印!" & vbCrLf & "或无单据。", vbInformation, "打印单据"
Else
If rstTemp.Fields("b_Check") = 1 Then
MsgBox "单据已打印,不能再次打印!", vbInformation, "打印单据"
q260401998 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxq19851204 的回复:]
select * from tbl_abc where cdate(b_Date)='2011-6-29'"
[/Quote]
刚试过了,也不行,查询出的结果集还是空的。
lxq19851204 2011-06-30
  • 打赏
  • 举报
回复
select * from tbl_abc where cdate(b_Date)='2011-6-29'"

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧