2013-03-07 71 views
0

我有一個包含多行和日期列的CSV文件。我想抓住所有有30天以上日期的行。這是我的最佳嘗試:按日期從CSV獲取行

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

這不會返回任何內容,並且有確定的日期早於30天的行。我的猜測是,$_.Date不被認爲是一個日期,但是我很難決定如何使它成爲一個日期。任何人都可以在這裏指出我正確的方向嗎?謝謝。 -Al

+0

什麼是日期列數據格式? – 2013-03-07 17:19:10

+1

Get-Data是你的文章中的錯字,還是在你的腳本中?它應該是'Get-Date' – alroc 2013-03-07 20:13:03

回答

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} 
+0

太棒了!正是我需要的。謝謝! – Cacophony 2013-03-07 17:29:51