私は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文字に変換することです。月が何月であっても、どうすれば二重文字にできますか?
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())
式ビルダー画面:
私のように、あなたが式の中で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 [〜#〜]
完全を期すために、次を使用できます。
(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関数を削除して、計算のみを行います。