Powershell不正确的日期排序

时间:2013-11-05 15:11:15

标签: powershell csv powershell-v2.0

我有一个CSV文件,其中包含各种不同的ID。使用a little help我已经能够将文件修剪为具有最早日期的ID,并且它在大多数情况下都很有效。我有几个记录似乎返回最新的日期,而另一个记录返回最旧的,我无法弄清楚为什么。发生这种情况的记录总是相同的。

以下是我输入CSV中的示例:

Number  File Date
OU00067949, 6/14/2012,
OU00067949, 6/19/2012,
OU00067949, 11/15/2012,
OU00067949, 1/30/2013,
OU00080302, 1/3/2013,
OU00080302, 1/3/2013,
OU00080302, 12/28/2012,
OU00080302, 12/28/2012,
OU00080302, 12/27/2012,
OU00080302, 12/27/2012,
OU00080281, 2/14/2013,
OU00080281, 1/30/2013,
OU00080281, 1/16/2013,
OU00080319, 12/27/2012,
OU00080319, 12/27/2012,

这是输出:

Number  File Date
OU00067949, 1/30/2013,
OU00080302, 1/3/2013,
OU00080281, 1/16/2013,
OU00080319, 12/27/2012,

我期待OU00067949的日期为6/14/2012,因为这是最早的日期。相反,我得到了2013年1月30日。 OU00080302也是如此,但其他都是正确的。可能导致这种情况的任何线索?

这就是剧本的全部内容:

Import-CSV $ImportFile | Group-Object "Number" | ForEach-Object { $_.Group | Sort-Object "File Date" | Select -First 1} | Export-CSV $ExportFile -NoTypeInformation

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:10)

看起来它正在尝试将日期排序为字符串。试试这个:

Import-CSV $ImportFile | Group-Object "Number" | ForEach-Object { $_.Group | Sort-Object { $_."File Date" -as [datetime] } | Select -First 1} | Export-CSV $ExportFile -NoTypeInformation

所以这个:

Sort-Object "File Date"

成了这个:

Sort-Object { $_."File Date" -as [datetime] }

信用就在这里: