下面有一组数据,它们都是字符串。
EndDate
--------
2017-04
2017-02
2017-01
2017-03
2017-06
我想将月份的最后日期添加到其中。
EndDate
--------
2017-04-30
2017-02-28
2017-01-31
2017-03-31
2017-06-30
我正在考虑先将它们转换为日期并使用EOMONTH语法来指定该月的最后日期。但是我尝试使用convert(datetime, EndDate)
将数据转换为日期,但它失败了。
我在stackoverflow中的帖子中尝试了下面的语法,但它也给了我错误消息。
EOMONTH(CONVERT(VARCHAR(max),CAST(EndDate + '01' AS DATETIME),120))
仅供参考,空白值应保留在列中。
我正在使用SQL Server 2012
感谢大家的帮助。
答案 0 :(得分:3)
你很亲密!
SELECT EOMONTH(TRY_CONVERT(date, EndDate + '-01', 120)) FROM ...
日期样式120是yyyy-mm-dd,但您创建的值是yyyy-mmdd。另外,当你应该给它一个日期参数时,你将varchar传递给EOMONTH
。
答案 1 :(得分:1)
我认为应该这样做:
CASE WHEN ISNULL(EndDate, '') <> '' THEN EOMONTH(CAST(EndDate + '-01' AS DATETIME)) ELSE EndDate END