2013-03-07 4 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

가 날짜 컬럼에있는 데이터의 형식은 무엇입니까? –

+1

여기에 귀하의 게시물에'Get-Data'가 오타가 있습니까? 아니면 스크립트에도 있습니까? 'Get-Date'이어야합니다. – alroc

답변

2

Import-CSV을 사용하여 데이터를 가져 오면 모든 속성이 문자열로 만들어집니다. 날짜별로 필터링하려면 날짜를 datetime 개체로 만들어야합니다. 샘플에는 두 번째 줄에 오타가 있습니다 (Get-Date 대신 Get-Data). 이 시도 : 당신이 원하는 경우

$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

관련 문제