我有一个如此简单的问题,我觉得问这个问题很愚蠢。我不敢相信我在这件事上遇到了麻烦。
我有一个名为“Orders”的表。 “Orders”有一个名为“DateOrdered”的小日期时间字段。我需要在特定日期获得所有“订单”。我尝试了以下但没有成功:
SELECT * FROM Orders WHERE [DateOrdered]=2010-06-01
SELECT * FROM Orders WHERE [DateOrdered]='2010-06-01'
SELECT * FROM Orders WHERE [DateOrdered]=CAST('2010-06-01' AS smalldatetime)
我做错了什么?我不敢相信我什至会问这个问题。
最佳答案
第一个查询将日期与数字 2003
进行比较(2010 减 6 减 1) 转换成日期 '1905-06-27'
.第二个和第三个查询适用于精确的日期值(即具有 00:00 时间分量),并且是等效的。
您的 smalldatetime 值中是否包含时间部分?在这种情况下,您可以在一个时间间隔内获取值:
SELECT * FROM Orders WHERE DateOrdered >= '2010-06-01'
and DateOrdered < '2010-06-02'
注意 >=
的使用和 <
而不是 between
关键字,以排除任何可能具有精确值 2010-06-02
的记录.
关于sql - 在 SQL Server 2005 中按日期/时间查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833279/