2012-05-21 91 views
1

我有一個輸入文件,必須每天加載到我的表中。我以以下格式樣本sample_20120518_160754.CSV接收文件。時間戳可能會有所不同,它不是當前時間戳如何在ssis中獲取具有時間戳的文件名

我已經使用表達式來獲取文件名以及日期,但是如何獲取文件的時間戳。

這是我用來獲取文件日期的表達式。

"sample_" + RIGHT("0" + (DT_STR,4,1252)DATEPART("yyyy", (DT_DATE)@[User::p_varAsOfDate]), 4) + RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", (DT_DATE)@[User::p_varAsOfDate]), 2) + (DT_STR, 2, 1252)DATEPART("mm", (DT_DATE)@[User::p_varAsOfDate]) +"_" +".CSV" 

這種表達yeilds導致

sample_2012145_.CSV現在我想要的文件也時間戳。

回答

3

下面是給出datepart +時間部分的表達式。您可以在其中添加額外的分隔符來完成所需的格式。

(DT_STR, 4, 1252)DATEPART("yyyy", @[System::ContainerStartTime]) + 
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mm", @[System::ContainerStartTime]), 2) + 
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", @[System::ContainerStartTime]), 2) + 
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[System::ContainerStartTime]), 2) + 
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[System::ContainerStartTime]), 2) + 
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[System::ContainerStartTime]), 2) + 

您可以編輯上面的表達和使用您選擇的另一個變量。我選擇了ContainerStartTime是因爲它的輕鬆。

+0

嗨拉吉夫,我試圖用這種表達,但這種表達yeilds當前時間戳。我可以在6號早上收回文件,我在下午2號加載文件。所以在這種情況下它不起作用。 – user1348424

+0

你究竟想達到什麼目的?你想從CSV文件中提取數據嗎?爲什麼你構建表達式來提取日期和時間? sample_2012145_.CSV看起來不錯,「2012145」沒有任何意義。 – rvphx

+0

我每天都會收到文件,而我的文件名是sample_yyyyddmm_hhmmss.csv格式。因此,我將Asofdate作爲輸入varibale傳遞。這是我用來獲取文件名「sample_」+ RIGHT(「0」+(DT_STR,4,1252)DATEPART(「yyyy」,(DT_DATE)@ [User :: (DT_STR,2,1252)DATEPART(「mm」,(DT_DATE)@ [User :: p_varAsOfDate]),2)+(DT_STR,2,1252)DATEPART((p_varAsOfDate)]),4)+ RIGHT 「dd」,(DT_DATE)@ [User :: p_varAsOfDate])+「.CSV」 – user1348424

2

@[User::miFilePath]+"AnyName"+"_"+(DT_WSTR, 04) YEAR(GETDATE())+(MONTH(GETDATE())>=10 ? (DT_WSTR, 02)MONTH(GETDATE()): "0"+(DT_WSTR, 02)MONTH(GETDATE()))+ (DAY(GETDATE())>=10? (DT_WSTR, 02)DAY(GETDATE()): "0"+(DT_WSTR, 02)DAY(GETDATE()))+"_"+RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", GETDATE()), 2) +RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", GETDATE()), 2) +RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", GETDATE()), 2) + ".txt"

相關問題