web-dev-qa-db-ja.com

SSIS式:日付を文字列に変換します

私は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」を1文字に変換することです。月が何月であっても、どうすれば二重文字にできますか?

20
resolver101

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

38
Milen Kindekov

@Milenが提案したものよりも単純なものですが、必要なDD-MM-YYYYではなくYYYY-MM-DDを提供します。

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

式ビルダー画面:

enter image description here

12
Max S.

私のように、あなたが式の中で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 [〜#〜]

1
Zach Smith

完全を期すために、次を使用できます。

(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
Thomas Franz