2014-03-25 49 views
0

在powershell中,我創建了一個datatable;有一個在數據表中的列,與格式化的日期:export-csv破壞我的日期格式

SELECT RIGHT('0' + cast(day(GETDATE()) as varchar(2)),2) + '-' + CAST(DATENAME(MONTH, GETDATE()) AS VARCHAR(3)) + '-' + cast(DATEPART(year, GETDATE()) as varchar(4)) 

所以實際值:DD-MMM-YYYY

除此之外,當我使用下面的日期格式更改爲DD-MMM -yy

$dtResult | export-csv $outputFile -notypeinformation 

關鍵是要獲得日期爲DD-MMM-YYYY

歡呼

+0

你可以顯示創建數據表的代碼嗎?這是否有用,作爲臨時設置當前會話的一種日期時間格式的方法 - http://stackoverflow.com/a/14910743/478656 - 然後可能export-csv將使用該格式。 – TessellatingHeckler

回答

2

這聽起來像日期作爲日期時間存儲在數據表中,所以它將使用系統默認格式。解決此問題的方法是將數據表第一轉換爲對象的集合,日期轉換爲字符串的過程:

$dtObjects = $dtResult | Select-Object ID, Name, @{n="DateField";e={$_.DateField.ToString("dd-MMM-yyyy"}} 

與實際字段名替換字段名。

+0

謝謝;我嘗試了你的建議;但日期仍然是「yy」格式,而不是「yyyy」;這是我如何做:$ dtObjects = $($ dtResult | Select-Object @ {n =「交易日期」; e = {$(([日期時間] $ _。TradeDate).tostring(「dd-MMM -yyyy「))}}) $ dtObjects | export-csv $ outputFile -notypeinformation – DotNet98

+0

查看原始csv文件或將其導入Excel或其他應用程序時,您是否看到錯誤的日期格式? – KevinD

+0

僅在打開.csv文件(導出後)時顯示錯誤的日期格式。原始數據表中的實際值和對象的新集合都是有效的。這是導致問題的導出位 – DotNet98