使用日历年代码

时间:2015-11-19 10:55:06

标签: sql sql-server tsql date casting

我有一个日期维度表,其中包含从2000年到2018年的每个日期。我需要在我的日期维度中添加一个新列,该列将被称为'CY'

我需要列'CY'填充以下代码:

如果日期介于01 January 2015 to 31 December 2015之间,那么代码将为'CY 2015',依此类推。我还有一个名为Year的列,其数据类型为'int'

我陷入了困境:

USE MyDatabase
UPDATE DateDimension
SET CY = 'CY' + ' ' + cast(Year AS text)

我收到此错误消息:

  

“不允许从数据类型int到文本的显式转换。”

我该如何纠正?

2 个答案:

答案 0 :(得分:2)

使用:

UPDATE DateDimension
SET CY = 'CY ' + cast([Year] AS NVARCHAR(4));

SQL Server 2012+

UPDATE DateDimension
SET CY = CONCAT('CY ', [Year]);

可能最好的方法是使用计算列(无需手动更新):

ALTER TABLE DateDimension
ADD CY AS CONCAT('CY ', [Year]);

LiveDemo

答案 1 :(得分:0)

另一种方法:

alter table DateDimension
add CY as 'CY'+ ' ' + left (Year, 4)