我想用日期查询这是我的样本tsql:
select * from Bookings where StartTime = '2/15/2014'
starttime的值为'2/15/2014 12:00:00 AM'
当我查询StartTime = date时没有时间结果为0
任何人都可以帮忙怎么做?
感谢
答案 0 :(得分:9)
试试这个
SELECT * FROM Bookings WHERE Convert(VARCHAR(10),StartTime,101) = Convert(Varchar(10),'2/15/2014',101)
如果您使用的是SQL SERVER 2012
试试这个
SELECT * FROM Bookings WHERE FORMAT(StartTime,'M/dd/yyyy') = FORMAT('2/15/2014','M/dd/yyyy')
答案 1 :(得分:6)
最好的方法是通过简单的比较:
select *
from Bookings
where StartTime >= cast('2014-02-15' as date) and StartTime < cast('2014-02-14' as date);
这是最安全的比较方法,因为它会利用StartTime
上的索引。这个属性叫做“sargability”。
在SQL Server中,转换为date
也应该是sargable,所以你也可以这样做:
select *
from Bookings
where cast(StartTime as date) = cast('2014-02-15' as date) ;
答案 2 :(得分:2)
'2014年2月15日'可以根据您的语言区域进行解释。尝试使用ISO日期文字'2014-02-15',它独立于区域设置。
select * from Bookings where StartTime = '2014-02-15'
或者,如果StartTime包含小时数:
select * from Bookings where StartTime >= '2014-02-15' and StartTime < '2014-02'16'
答案 3 :(得分:0)
我相信你也可以这样做:
select * from Bookings where StartTime::date = '2014-2-15'