从上午6点之后选择记录

时间:2015-06-16 14:35:02

标签: sql tsql

拥有table:item(int)和timestamp(datetime)。 需要知道在最后 6 AM之后是否有任何带时间戳的记录。

实施例:

  

凌晨5点,应检查上午6点以后是否有任何记录   昨天上午7点,应检查是否有任何记录   今天上午6点以后

当然,这可以通过将datepart变量设为:

来完成
  

如果现在时间是<如果现在是时间,早上6点应该是昨天   is> = = 6 AM datepart应该是今天

但必须有一个更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

此表达式应始终返回过去最近的06:00:

select DATEADD(hour,
     (DATEDIFF(hour,'2014-01-01T06:00:00',CURRENT_TIMESTAMP)/24)*24,
                  '2014-01-01T06:00:00')

它的工作原理是询问自从一些任意的,已知的,6AM以来发生了多少小时。然后我们将此数字向下舍入到最接近的24的倍数(通过除以并乘以整数数学),并将此数字添加回相同的,任意的,6AM