gpt4 book ai didi

sql-server-2008 - 从sql server中的记录中选择上个月的第一天

转载 作者:行者123 更新时间:2023-12-02 04:56:11 25 4
gpt4 key购买 nike

我有一个表,其中有一列名为 StartDateTime,用于存储日期时间值。我需要一个语句来返回当前记录上个月第一天的日期。因此,如果存储的日期是 2006-06-17 08:23:42.000,语句将返回 2006-05-01 00:00:00.000,重要的是如果存储日期是 2006-01-17 08:23:42.000 该语句将返回 2005-11-1 00:00:00.000

如果我可以使用 DATEBYPARTS 这似乎很简单,但不幸的是我不能。我尝试使用

CAST( 
CAST( Year([StartDateTime]) as varchar(4) )
+ '-' +
CAST( (Month([StartDateTime])-1) as varchar(2) )
+ '-' +
CAST( '1' as varchar(2) )
AS DATETIME )

但它在 1 月 1 日日期出错并给出错误“将 char 数据类型转换为 datetime 数据类型导致日期时间值超出范围。”

最佳答案

select dateadd(mm, datediff(mm, 0, StartDateTime) - 1, 0)
from <yourtable>

或者,正如 Aaron Bertrand 在评论中建议的那样,更清晰的方式

select dateadd(month, datediff(month, 0, StartDateTime) - 1, 0)
from <yourtable>

SQL FIDDLE EXAMPLE

关于sql-server-2008 - 从sql server中的记录中选择上个月的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com