列名rcvdate,具有日期时间类型,值如下:
2009-10-20 10:00:00
我想做一个选择,我的查询:
SELECT *
FROM data
WHERE rcvdate = '2009-10-20'
不工作,我期待运行查询,因为我检查了很多查询,但它们没有用。
答案 0 :(得分:7)
如果您想要一天的所有行,请检查间隔:
SELECT *
FROM data
WHERE rcvdate >= '20091020' AND
rcvdate < DATEADD(day, 1, '20091020')
从SQL Server 2008中,您可以使用此代码:
SELECT *
FROM data
WHERE CAST(rcvdate as DATE) = '2009-10-20'
答案 1 :(得分:2)
SELECT * FROM data WHERE CONVERT(rcvdate, date) = '2009-10-20'
您应该将datetime-field转换为date-field,因为在您的查询'2009-10-20'中转换为datetime'2009-10-20 00:00:00'
<强> UPD:强>
SELECT * FROM data WHERE CAST(rcvdate AS date) = '2009-10-20'
会有相同的结果。
答案 2 :(得分:1)
你可以走到哪里,它始终有效,谢谢
SELECT * FROM data WHERE
DATEDIFF(dd,0,rcvdate )
BETWEEN DATEDIFF(dd,0,'2009-10-20') AND
DATEDIFF(dd,0,'2009-10-20')
这里是参考,你可以用不同的方式来转换日期。 http://www.sqlusa.com/bestpractices/datetimeconversion/
由于