拥有table:item(int)和timestamp(datetime)。 需要知道在最后 6 AM之后是否有任何带时间戳的记录。
实施例:
凌晨5点,应检查上午6点以后是否有任何记录 昨天上午7点,应检查是否有任何记录 今天上午6点以后
当然,这可以通过将datepart变量设为:
来完成如果现在时间是<如果现在是时间,早上6点应该是昨天 is> = = 6 AM datepart应该是今天
但必须有一个更简单的方法吗?
答案 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