2014-03-25 52 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