sql-server – 如何在没有时间部分的情况下获取当前日期

前端之家收集整理的这篇文章主要介绍了sql-server – 如何在没有时间部分的情况下获取当前日期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server 2005中,如何在没有时间部分的情况下获取当前日期?我一直在使用GETDATE()但希望它的时间为00:00:00.0

解决方法

如果必须迭代记录集并且在sql Server 2008中没有日期,则速度最快
SELECT DATEADD(day,DATEDIFF(day,GETDATE()),0)

StackOverflow上有两个不同且优秀的答案:One,Two

Varchar转换是最糟糕的方法之一.当然,对于一个价值而言,这可能并不重要,但这是一个很好的习惯.

这种方式也是确定性的,例如,如果要索引计算列.即使编写有关sql Server的书籍的人也会得到caught out with datetime conversions

这种技术也是可扩展的.

>昨天:DATEADD(day,– 1)
>月初:DATEADD(月,DATEDIFF(月,0)
>上个月末:DATEADD(月,– 1)
>下个月的开始:DATEADD(月,31)

编辑:

正如我提到的确定性,除非使用样式112,否则varchar方法并不安全.

这里的其他答案指出,您永远不会将其应用于列.这是正确的,但您可能希望选择100k行或添加计算列或GROUP BY dateonly.然后你必须使用这种方法.

另一个答案也提到了样式110.这不是语言或SET DATEFORMAT安全,并且失败了“英国”语言设置. See the ultimate guide to the datetime datatypes by Tibor Karaszi.

原文链接:https://www.f2er.com/mssql/80463.html

猜你在找的MsSQL相关文章