23

我是 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”​​转换为单个字符,与天相同。无论是几月,我如何使它成为双重角色?

4

5 回答 5

43

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

表达式生成器屏幕:

表达式生成器屏幕

于 2013-05-23T10:30:29.970 回答
20

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

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

表达式生成器屏幕:

在此处输入图像描述

于 2018-04-17T19:31:26.147 回答
2

如果像我一样,您尝试GETDATE()在表达式中使用并且有看似不合理的要求(SSIS/SSDT 对我来说似乎是一项正在进行的工作,而不是一个完善的产品)希望将该日期插入 SQL Server 作为一个有效的日期(类型 = datetime),然后我发现这个表达式有效:

@[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)

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

于 2017-06-27T22:52:17.533 回答
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)
于 2020-01-28T07:20:09.993 回答
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-columns),只需删除 DT_STR / RIGTH 函数并进行数学运算。

于 2019-05-06T08:28:38.483 回答