加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2020-12-25 01:44:26 所属栏目:编程 来源:网络整理
导读:在SQL Server 2005中,如何在没有时间部分的情况下获取当前日期?我一直在使用GETDATE()但希望它的时间为00:00:00.0 解决方法 如果必须迭代记录集并且在SQL Server 2008中没有日期,则速度最快 SELECT DATEADD(day,DATEDIFF(day,GETDATE()),0) StackOverflow

在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.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读