微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在没有时间部分的情况下获取当前日期

如果您必须遍历记录集并且在 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 举报,一经查实,本站将立刻删除。