sql = "select * from space where dates='" & format(dt,"yyyy-mm-dd") & "' and times='" & ts & "'"
谢谢两位的回答,我已经测试单步执行和设置断点没有问题,但是我的程序是用timer件触发的,自动执行的查询关键代码是这样的: dt=date ts = "07:40" Call cdata sql = "select content,dates,times from space where dates='" & dt & "' and times='" & ts & "'" rs.Open sql, conn, 3, 1 i = rs.RecordCount ReDim s(1 To i) For j = 1 To rs.RecordCount s(j) = rs.Fields("content") rs.MoveNext Next rs.Close conn.Close 就是想不通为什么会查到前两天的数据,用date这个函数返回的应该是今天的日期啊??
paoluo(一天到晚游泳的鱼) 大哥在不在啊我用 dt = date ts = "07:45" sql = "select * from space where DateDiff(dd, dates, '" & dt & "') = 0 and times='" & ts & "'" 返回的数据还是两天的数据,为什么啊??好郁闷!恳请在线的各位大虾帮帮忙!在线等!!
這樣試下看dt = date ts = "07:45" sql = "select * from space where DateDiff(dd, dates, GetDate()) = 0 and times='" & ts & "'"
paoluo(一天到晚游泳的鱼)大哥 在不在 还是不行啊,代码是按照你上面写的: Set rs = New ADODB.Recordset ts = "07:40" Call cdata sql = "select content,dates,times from space where DateDiff(dd, dates, GetDate()) = 0 and times='" & ts & "'" rs.Open sql, conn, 3, 1 i = rs.RecordCount郁闷啊,不知道怎么搞的,请帮忙啊!
你没有搞清楚问题的关键: 1 如果你的日期和时间字段使用的是 DateTime 类型,那么它们都是以 Double 类型存储的,整数部分表示日期,小数部分表示时间(一天中的几分之几)。Date 函数的返回值也是如此。2 向数据库引擎传送的 SQL 语句中,日期必须用“字符串日期值”来表示。进入数据库引擎后,它会进行字符串向 Double 类型的转换。3 字符串日期的表示方法有多种,首先可以是美式或英式,可以全部数字也可以夹杂英文月份(可以是缩写)。最关键的是使用哪一种引号,如果是 Access 库,使用 #,如果是 SQL server 库使用 '。我一般不在 SQL 语句中夹杂日期函数计算,一,因为需要逐条记录计算,效率会受影响,特别是记录多时。二,并非所有数据库引擎都支持 VB 内部函数。sql = "select content,dates,times from space where dates='" & Format(Date, "yyyy-mm-dd") & "' and times='" & ts & "'"
sql = "select content,dates,times from space where dates='" & Format(Date, "yyyy-mm-dd") & "' and times='" & ts & "'"------------ 如果dates中僅有日期,而時間全部為0的話,這個沒有問題。但是如果時間部分不為0,這個語句可能會查詢不出東西。不過看樓主的數據,時間和日期好象是分開兩個字段存儲的,那就應該沒有問題。
Select * From 表 Where DateDiff(dd, 時間字段, GetDate()) = 0
这句话不懂?我的查询语句只这样的
dt = date
ts = "07:45"
sql = "select*from space where dates='" & dt & "' and times='" & ts & "'"
--去掉dt, 可以直接用GetDate()
ts = "07:45"
sql = "select * from [space] where DateDiff(dd, dates, GetDate()) = 0 and times='" & ts & "'"
ts = "07:45"
sql = "select * from [space] where DateDiff(dd, dates, '" & dt & "') = 0 and times='" & ts & "'"
这句话不明白,也没有见过请paoluo大哥告诉我,谢谢!
不好意思,我忘记了,dates在SQL数据库是数据类型是datetime你的意思我明白是今天的日期减数据库纪录日期得到的是0 才符合条件我还想请问下为什么直接用date不行,可以告诉我吗? 谢谢!
---------------------
我忘记了,dates在SQL数据库是数据类型是datetime
datetime類型也是一樣可以用
不過,你那個為什麼不行,我也不清楚。你可以單步調試,在那個地方設置斷點,將要執行的SQL去出來看看,執行的是怎樣的語句。這樣能更容易清楚錯誤原因。
dt=date
ts = "07:40"
Call cdata
sql = "select content,dates,times from space where dates='" & dt & "' and times='" & ts & "'"
rs.Open sql, conn, 3, 1
i = rs.RecordCount
ReDim s(1 To i)
For j = 1 To rs.RecordCount
s(j) = rs.Fields("content")
rs.MoveNext
Next
rs.Close
conn.Close
就是想不通为什么会查到前两天的数据,用date这个函数返回的应该是今天的日期啊??
dt = date
ts = "07:45"
sql = "select * from space where DateDiff(dd, dates, '" & dt & "') = 0 and times='" & ts & "'"
返回的数据还是两天的数据,为什么啊??好郁闷!恳请在线的各位大虾帮帮忙!在线等!!
ts = "07:45"
sql = "select * from space where DateDiff(dd, dates, GetDate()) = 0 and times='" & ts & "'"
还是不行啊,代码是按照你上面写的:
Set rs = New ADODB.Recordset
ts = "07:40"
Call cdata
sql = "select content,dates,times from space where DateDiff(dd, dates, GetDate()) = 0 and times='" & ts & "'"
rs.Open sql, conn, 3, 1
i = rs.RecordCount郁闷啊,不知道怎么搞的,请帮忙啊!
1 如果你的日期和时间字段使用的是 DateTime 类型,那么它们都是以 Double 类型存储的,整数部分表示日期,小数部分表示时间(一天中的几分之几)。Date 函数的返回值也是如此。2 向数据库引擎传送的 SQL 语句中,日期必须用“字符串日期值”来表示。进入数据库引擎后,它会进行字符串向 Double 类型的转换。3 字符串日期的表示方法有多种,首先可以是美式或英式,可以全部数字也可以夹杂英文月份(可以是缩写)。最关键的是使用哪一种引号,如果是 Access 库,使用 #,如果是 SQL server 库使用 '。我一般不在 SQL 语句中夹杂日期函数计算,一,因为需要逐条记录计算,效率会受影响,特别是记录多时。二,并非所有数据库引擎都支持 VB 内部函数。sql = "select content,dates,times from space where dates='" & Format(Date, "yyyy-mm-dd") & "' and times='" & ts & "'"
如果dates中僅有日期,而時間全部為0的話,這個沒有問題。但是如果時間部分不為0,這個語句可能會查詢不出東西。不過看樓主的數據,時間和日期好象是分開兩個字段存儲的,那就應該沒有問題。
sql = "select content,dates,times from space where dates='" & Format(Date, "yyyy-mm-dd") & "' and times='" & ts & "'"
补充下,上面的代码是我现在查询的语句,返回的数据的时间是07:45没有错,就是日期不对,老是返回昨天的,我想要是运行3天可能会得到3天的数据!