2015-02-11 35 views
0

我正在運行下面包含的Powershell代碼以將簡單SQL select查詢的結果導出到csv文件中。如果我運行從SQL工作室相同的查詢,我得到一個日期時間是這樣的:Export-CSV將錯誤的格式應用於SQL DataTable的DateTime列

2014年8月6日15:05:49.663

後,我運行它通過出口,CSV和打開最終csv文件:

2014年8月6日下午3時05分49秒

任何想法如何,我可以在我的腳本解決這一問題?

代碼:

$ConnectionString = "Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;Connect Timeout={4}" -f $ServerInstance,$Database,$Username,$Password,$ConnectionTimeout 
$conn=new-object System.Data.SqlClient.SQLConnection 
$conn.ConnectionString=$ConnectionString 
$conn.Open() 
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn) 
$cmd.CommandTimeout=$QueryTimeout 
$ds=New-Object system.Data.DataSet 
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd) 
[void]$da.fill($ds) 
$ds.Tables[0] | export-csv -Delimiter '|' -Path 'c:\test.txt' -NoTypeInformation 
+0

包含您希望重新格式化的日期時間的SQL列/ PS對象屬性的名稱是什麼? – 2015-02-11 14:57:39

+0

有多個這樣的列。而且還有多個表,我想這樣做,每個表都有不同的列名。 – blizz 2015-02-11 16:40:54

回答

1

你知道包含您正在尋找的日期列的名字嗎?我會認爲它被稱爲Foo對本

$ds.Tables[0] | 
    Select-Object -ExcludeProperty Foo @{Name="Foo";Expression={([datetime]$_.Foo).ToString("yyyy-MM-dd HH:mm:ss.fff")}},* | 
    export-csv -Delimiter '|' -Path 'c:\test.txt' -NoTypeInformation 

目的原諒我,如果這是無用的或沒有幫助。這假設日期和時間細節尚未從導入數據中丟失。

這將默認導出除Foo之外的所有屬性,並代替Foo使用計算屬性來格式化輸出字符串。

+0

這不起作用,當我嘗試它...它會拋出一個錯誤 – blizz 2015-02-12 14:38:42

+0

@blizz如果我知道錯誤是什麼,它將是非常有用的。可能只是簡單的事情,我可能實際上可以修復。 – Matt 2015-02-12 14:59:09

+0

對不起,我結束了它的工作,就像你說的,但它就好像它沒有做任何事情... $ ds.Tables [0] | Select-Object -ExcludeProperty InsertDate @ {Name =「InsertDate」; Expression = {([datetime] $ _。InsertDate).ToString(「yyyy-MM-dd HH:mm:ss.fff」)}} | export-csv -Delimiter'|' -Path'c:\ reports \ test.txt'-NoTypeInformation – blizz 2015-02-12 17:49:37