在 SQL 中忽略来自 GETDATE() 的秒数和毫秒数

Ignore seconds and milliseconds FROM GETDATE() in SQL

我想 remove/ignore 来自 GETDATE() SQL 函数的秒数和毫秒数。 当我执行时,

SELECT GETDATE()

输出会像

2015-01-05 14:52:28.557

我想忽略上面输出中的秒和毫秒。执行此操作的优化和最佳方法是什么?

我试过通过这样的类型转换来做到这一点:

SELECT CAST(FORMAT(GETDATE(),'yyyy-MM-dd HH:mm:0') AS datetime) 

这是执行此操作的正确优化方法吗?

试试这个:

SELECT dateadd(minute, datediff(minute, 0, GETDATE()), 0)

查询使用 DATEDIFF return 两个日期之间的分钟数,忽略较小的单位。 0 是过去的固定日期。

它可以很容易地适应其他时间单位。

我认为你的方法如果可行(看起来应该可行,但我还没有测试过)就没问题。还有很多其他可能的方法。这是一个:

select cast(convert(char(16), getdate(), 120) as datetime)

我要么使用 DATEADD/DATEDIFF 技巧 or just cast it to smalldatetime1:

select CAST(GETDATE() as smalldatetime)

我会避免任何涉及通过字符串来回传递值的事情。

1如果秒始终无关紧要,此时更改架构以使用此数据类型可能是合适的。