如何解决如何在没有时间部分的情况下获取当前日期
如果您必须遍历记录集并且在 sql Server 2008 中没有日期,则最快
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Varchar 转换是最糟糕的方法之一。当然,对于一个价值来说,这可能并不重要,但这是一个养成的好习惯。
这种方式也是确定性的,比如说如果你想索引一个计算列。即使是写 sql Server 书籍的人也会被日期时间转换所困扰
这种技术也是可扩展的。
- 昨天:
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
- 月初:
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
- 上月底:
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
- 下个月开始:
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
编辑:
正如我提到的确定性,varchar 方法是不安全的,除非您使用样式 112。
此处的其他答案指出,您永远不会将其应用于列。这是正确的,但您可能希望选择 100k 行或添加计算列或 GROUP BY dateonly。然后你必须使用这个方法。
另一个答案还提到了样式 110。这不是语言或 SET DATEFORMAT 安全的,并且因“英国”语言设置而失败。
解决方法
在 SQL Server 2005 中,如何获取没有时间部分的当前日期?我一直在使用GETDATE(),但希望它的时间为 00:00:00.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。