更改日期格式SQL

时间:2019-02-27 22:37:48

标签: sql sql-server

9月19日(每月)-varchar

字符串,我需要做的是将其更改为:

2019年9月30日(每年的MONTH DAY(MONTH DAY))

我正在使用SQL Server 2014。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

这应该有效:

select eomonth(cast('01-' + month_year as date))

我不是2位数年份的粉丝,但这应该适用于很多年份。

答案 1 :(得分:2)

真的,您不应该以这种格式存储或接受日期。

但是考虑到已经存在,并且毫无疑问的是,您将无法修复它,则可以使用样式6(dd MMM yy)和一些字符串操作来将该格式恢复为正确的日期。但是您必须确保您的语言设置与数据存储方式匹配:

SET LANGUAGE us_english;

DECLARE @my char(6) = 'Sep-19';

SELECT EOMONTH(CONVERT(date, REPLACE('01 '+@my,'-',' '), 6));

我确实不是EOMONTH()的忠实拥护者,因为这是关于它唯一有用的应用程序。在我自己的代码中,即使更冗长,我也可能会使用类似的东西:

SELECT DATEADD(DAY, -1, DATEADD(MONTH, 1, CONVERT(date, REPLACE('01 '+@my,'-',' '), 6)));

答案 2 :(得分:1)

已经有一些不错的答案了,但是我还是要添加我的答案:

declare @input as nvarchar(100) = 'Sep-19'

select FORMAT(EOMONTH(PARSE(LEFT(@input, 3) + '-01-' + RIGHT(@input, 2) as datetime using 'En-Us')), 'MMMM dd, yyyy')

输出为:“ 2019年9月30日”