如何设置日期和时间比给定日期大的日期?

时间:2018-10-18 10:53:45

标签: sql sql-server

我需要写一个查询,返回所有带有小时和分钟的日期大于5:30的记录。示例:我们有日期:2018-10-18 03:00和2018-10-18 05:40。我只需要返回第二个。我现在正在做的是(在“选择”部分):

case
when DATEPART(hh,Table1.CreateDate)>05 and DATEPART(mi,Table1.CreateDate)>30 then 'late_status' end as Statuses

问题是我需要同时满足这两个条件。我也使用了方括号,但仍然不正确。基本上,它不能很好地工作,问题出在哪里?

3 个答案:

答案 0 :(得分:1)

直接使用时间怎么样?

where cast(Table1.CreateDate as time) >= '05:30:00'

答案 1 :(得分:0)

如果可以的话,就个人而言,(并且您需要大量时间查询)我会添加time列的datetime版本作为PERSISTED计算列,并查询。保持了可维护性。

ALTER TABLE Table1 ADD CreateTime AS CONVERT(time, CreateDate);

然后您可以查询新列:

WHERE CreateTime >= '05:30:00'

然后,您还可以将计算列添加到任何索引,或在其上或包含索引的列创建索引。

答案 2 :(得分:0)

它将是 a b c 0 foo_abc foo abc 1 bar_def bar def 2 ghi yah ghi 而不是MINUTE,您的查询也可以使用

mi

DEMO