SQL Server:比较时间

时间:2015-08-26 00:54:58

标签: sql sql-server tsql

我想在SQL查询中比较时间。但是,当我运行查询时,我得到零结果但我可以在表中看到应该出现的记录。

查询是这样的:

SELECT * 
FROM dbo.Alarms 
WHERE StartDate <= '26/08/2015' 
  AND StartTime <= CONVERT(varchar(5), GETDATE(), 108)

StartDate作为YYYY-MM-DD存储在数据库中,当我仅查询日期时它似乎工作正常。

然而,当我添加StartTime时,事情就不起作用了。 StartTime以24小时制格式存储该值。

什么做得不对?

由于

2 个答案:

答案 0 :(得分:2)

使用正确的日期时间格式:

SELECT *
FROM dbo.Alarms
WHERE StartDate <= '2015-08-26' AND StartTime <= cast(GETDATE() as date)

不要将日期/时间值作为字符串进行比较。数据类型内置于该语言中。使用它们。

答案 1 :(得分:0)

我没有明确使用这种情况,但根据字段的比较方式,比较日期可能会有问题。

例如:'28/07/2015'不小于您作为28 > 26的开始日期。

您可以尝试将重新格式化的日期与YYYYMMDD格式进行比较。

干杯。