我们如何获得两个日期时间之间的小时、分钟和秒差异?

Kai*_*shu 1 sql-server sql-server-2012 datetime date

table任务有列如下:

Task(TaskID, TaskName, CreatedDate)
Run Code Online (Sandbox Code Playgroud)

并希望根据日期时间差异执行代码块:

如果任务 CreatedDate 已过去 15 分钟 THEN

执行块#01

否则,如果任务 CreatedDate 还没有超过 15 分钟,那么

执行块#02

我测试了下面的查询,但它给出的结果为 61633440

SELECT DATEDIFF(MINUTE, CONVERT(VARCHAR(10), CreatedDate, 108), CURRENT_TIMESTAMP) AS MinuteDiff
Run Code Online (Sandbox Code Playgroud)

我们如何在 sql 中实现上述目标?

Mik*_*son 5

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并且该函数返回自上个世纪初以来的分钟数。

删除第二个参数中的转换,它应该适合你。