如何在ms sql中查询日期与时间=没有时间的日期

时间:2014-02-13 04:04:58

标签: sql-server

我想用日期查询这是我的样本tsql:

select * from Bookings where StartTime = '2/15/2014'

starttime的值为'2/15/2014 12:00:00 AM'

当我查询StartTime = date时没有时间结果为0

任何人都可以帮忙怎么做?

感谢

4 个答案:

答案 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')

SQL FORMAT

答案 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'