在 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 smalldatetime
1:
select CAST(GETDATE() as smalldatetime)
我会避免任何涉及通过字符串来回传递值的事情。
1如果秒始终无关紧要,此时更改架构以使用此数据类型可能是合适的。
我想 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
技巧 smalldatetime
1:
select CAST(GETDATE() as smalldatetime)
我会避免任何涉及通过字符串来回传递值的事情。
1如果秒始终无关紧要,此时更改架构以使用此数据类型可能是合适的。