【发布时间】:2018-05-19 18:28:25
【问题描述】:
我下面有一组数据,它们都是字符串。
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
感谢大家的帮助。
【问题讨论】:
-
你能提供错误吗?
-
如果您遇到错误,请发布。
EOMONTH的参数是什么数据类型?肯定不是VARCHAR(MAX)。那为什么要转换呢? -
赞博尼做对了。
-
Msg 241, Level 16, State 1, Line 1 从字符串转换日期和/或时间时转换失败。我认为空白值会导致此错误。
-
明白了。 [EndDate] = '' then '' else EOMONTH(CONVERT(date, [EndDate] + '-01', 120)) 结束的情况。谢谢大家的帮助=D。为所有人加 1。
标签: sql-server string date datetime type-conversion