我有一个 int 列,它存储日期如下:
201101
201102
201103
我需要获取这些 int 并将它们转换为如下所示:
01/2011
02/2011
03/2011
但是在同一列中,我需要在该日期添加一年,因此我希望以下列与现有的列相对应
201101 = 01/2011 - 12/2011
201102 = 02/2011 - 01/2012
201103 = 03/2011 - 02/2012
到目前为止,我做了以下操作,将其变成了日期字符串:
RIGHT(RTRIM([x].[Work_Month]),2) + '/' + LEFT([x].[Work_Month],4) AS PeriodDisplay
我只是不知道如何添加一年?
谢谢
最佳答案
DATEADD(yyyy,1,convert(date,RIGHT(RTRIM([x].[Work_Month]),2) + '/01/' + LEFT([x].[Work_Month],4) ))
我所做的更改:
- 添加到/01/原来的位置 - 以便将其设置为该月的第一天,否则无法将其解析为日期
- 将其包含在
convert(date)
函数中,以将其转换为日期类型。 msdn - 将其放在
dateadd
函数中以添加一年。 msdn
如果您确实希望该列包含两个日期(因此该字符串实际上是 03/2011 - 02/2012),那么只需从第一个日期中删除 dateadd 即可。如果您不想要这些天,那么您可以使用子字符串将它们删除。但这确实是一个前端问题:SQL Server 并不是执行此操作的理想工具。
关于SQL Int to Date 然后提前 1 年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328526/