我有一个表,其中有一个名为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 数据类型转换为日期时间数据类型导致超出范围的日期时间值。”