如何在 SQL 中选择一个月的第一天?

新手上路,请多包涵

我只需要选择给定 DateTime 变量的月份的第一天。

我知道使用这种代码很容易做到:

 select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)

但不幸的是,这不是很优雅,也不是很快。

有一个更好的方法吗?我正在使用 SQL Server 2008。

原文由 Brann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 359
2 个回答
SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth

原文由 LukeH 发布,翻译遵循 CC BY-SA 2.5 许可协议

从 SQL Server 2022 开始,您可以使用 DATETRUNC

 SELECT DATETRUNC(month, @mydate)

为了这个需要

原文由 Martin Smith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进