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

问题描述 投票:0回答:6

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

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

我遇到的问题是当我希望月份“23-4-2013”为双字符时,Month() 将其转换为单个字符,与日相同。无论是哪个月份,如何将其变成双字符?

ssis expression getdate
6个回答
48
投票

对于 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


24
投票

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

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

表达式生成器屏幕:


5
投票

如果您像我一样尝试在表达式中使用

GETDATE()
并有看似不合理的要求(SSIS/SSDT 对我来说似乎是一项正在进行的工作,而不是一个完善的产品),希望插入该日期作为有效日期(类型 =
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)

我找到了这个代码片段这里


1
投票

为了完整起见,您可以使用:

(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-columns),只需删除 DT_STR / RIGTH 函数并进行数学计算即可。


0
投票

试试这个。它会给你 DD-MM-YYYY

SUBSTRING((DT_WSTR, 30)getdate(), 9,2)+"-"+SUBSTRING((DT_WSTR, 30)getdate(),6,2)+"-"+SUBSTRING((DT_WSTR,30)getdate(), 1,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)

使:

MDS/材料/2020/01/18

对于那些需要这种格式的人。

© www.soinside.com 2019 - 2024. All rights reserved.