按日期从CSV获取行

时间:2013-03-07 17:03:45

标签: powershell csv

我有一个包含多行和一个日期列的CSV文件。我想抓住所有日期超过30天的行。这是我最好的尝试:

$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Data).AddDays(-30)
$Data | Where-Object {$_.Date -lt $CutoffDate}

这不会返回任何内容,并且肯定有超过30天的日期行。我的猜测是$_.Date不被认为是一个约会,但就是这样,我很难理解如何做到这一点。任何人都能指出我在正确的方向吗?谢谢。 -Al

1 个答案:

答案 0 :(得分:2)

使用Import-CSV导入数据时,所有属性都将创建为字符串。要按日期过滤,您需要将日期设为datetime个对象。样本在第二行(Get-Data而不是Get-Date)上也有拼写错误。试试这个:

$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}

如果您愿意,可以将其与Import-CSV结合使用,如下所示:

$CutoffDate = (Get-Date).AddDays(-30)
$Data = Import-CSV "H:\Data.csv" | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}