任务的table
列如下:
Task(TaskID, TaskName, CreatedDate)
并希望根据日期时间差执行代码块:
IF 任务 CreatedDate 已过 15 分钟 THEN
执行块#01
ELSE IF 任务 CreatedDate 还没有超过 15 分钟 THEN
执行块#02
我在下面的查询中进行了测试,但结果为61633440
SELECT DATEDIFF(MINUTE, CONVERT(VARCHAR(10), CreatedDate, 108), CURRENT_TIMESTAMP) AS MinuteDiff
我们如何在sql中实现上述目标?
CURRENT_TIMESTAMP返回当前日期时间,例如
2017-03-09 15:19:53.770
.CONVERT(VARCHAR(10), CreatedDate, 108)
返回一个只有 time 的字符串15:19:53
。DATEDIFF的第二个参数采用日期时间,因此您的字符串被隐式转换为日期时间。由于 SQL Server 使用的日期没有更好的用途,
1900-01-01
因此您的第二个参数最终是1900-01-01 15:19:53.000
并且该函数返回自上个世纪初以来的分钟数。删除第二个参数中的转换,它应该适合你。
这是计算自 CreatedDate 以来经过的分钟数、秒数、小时数的 sql 代码:
执行两个不同的代码块可能需要您逐个记录处理,这既耗时又耗费资源。
如果您只是希望报告或操作数据,您可以编写两个查询。
两个日期时间之间的差异以小时:分钟:秒格式获得结果
回答
06:45:55