SSIS表达式:将日期转换为字符串

时间:2013-05-23 10:19:30

标签: ssis expression getdate

我是SSIS的新手,我正在尝试将GetDate()转换为字符串“DD-MM-YYYY”。这是我到目前为止构建的表达式:

(DT_WSTR, 8)  DAY( GETDATE()) + "-" + (DT_WSTR, 8)  (MONTH(GETDATE()) - 1) + "-" + (DT_WSTR, 8) YEAR(GETDATE())

我遇到的问题是Month()将月份“23-4-2013”​​转换为单个字符,当我想要双字符时,与日相同。无论月份是什么,我怎么把它变成双重角色?

5 个答案:

答案 0 :(得分:36)

对于SSIS,你可以选择:

RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "-" +  (DT_STR, 4, 1252) DATEPART("yy" , GETDATE())

表达式构建器屏幕:

Expression builder screen

答案 1 :(得分:6)

比@Milen提议的更简单,但是它给出YYYY-MM-DD而不是你想要的DD-MM-YYYY:

SUBSTRING((DT_STR,30, 1252) GETDATE(), 1, 10)

表达式构建器屏幕:

enter image description here

答案 2 :(得分:1)

如果像我一样,你试图在一个表达式中使用GETDATE()并且看似不合理的要求(SSIS / SSDT对我来说似乎非常重要,而不是一个优秀的产品)想要那个作为有效日期(type = datetime)插入SQL Server的日期,然后我发现这个表达式可以工作:

@[User::someVar] = (DT_WSTR,4)YEAR(GETDATE()) + "-"  + RIGHT("0" + (DT_WSTR,2)MONTH(GETDATE()), 2) + "-"  + RIGHT("0" + (DT_WSTR,2)DAY( GETDATE()), 2) + " " + RIGHT("0" + (DT_WSTR,2)DATEPART("hh", GETDATE()), 2) + ":" + RIGHT("0" + (DT_WSTR,2)DATEPART("mi", GETDATE()), 2) + ":" + RIGHT("0" + (DT_WSTR,2)DATEPART("ss", GETDATE()), 2)

我找到了此代码段HERE

答案 3 :(得分:0)

出于完整性考虑,您可以使用:

(DT_STR,8, 1252) (YEAR(GetDate()) * 10000 + MONTH(GetDate()) * 100 + DAY(GetDate()))

对于YYYYMMDD或

RIGHT("000000" + (DT_STR,8, 1252) (DAY(GetDate()) * 1000000 + MONTH(GetDate()) * 10000 + YEAR(GetDate())), 8)
DDMMYYYY的

(不带连字符)。如果您希望/需要日期为整数(例如,DWH中的_key列的日期),只需删除DT_STR / RIGTH函数,然后仅进行数学运算即可。

答案 4 :(得分:0)

@[User::path] ="MDS/Material/"+(DT_STR, 4, 1252) DATEPART("yy" , GETDATE())+ "/" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "/" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)