我想删除/忽略来自GETDATE()SQL函数的秒和毫秒。 当我执行时,
SELECT GETDATE()
输出就像
2015-01-05 14:52:28.557
我想从上面的输出中忽略秒和毫秒。优化和最佳方法是什么?
我试图通过这样的类型转换来做到这一点:
SELECT CAST(FORMAT(GETDATE(),'yyyy-MM-dd HH:mm:0') AS datetime)
这是正确和优化的方法吗?
答案 0 :(得分:1)
试试这个:
SELECT dateadd(minute, datediff(minute, 0, GETDATE()), 0)
查询使用DATEDIFF
返回两个日期之间的分钟数的事实,忽略较小的单位。 0
是过去的固定日期。
它可以很容易地适应其他时间单位。
答案 1 :(得分:1)
我要使用Codo has shown的DATEADD
/ DATEDIFF
技巧,或者只是将其投放到smalldatetime
1 :
select CAST(GETDATE() as smalldatetime)
我避免任何涉及通过字符串对值进行四舍五入的事情。
1 此时,如果秒始终无关紧要,则可能适合更改架构以使用此数据类型。
答案 2 :(得分:0)
我认为你的方式很好,如果它有效(看起来应该如此,但我还没有测试过。)还有很多其他可能的方法。这是一个:
select cast(convert(char(16), getdate(), 120) as datetime)