2014-10-01 3 views
0

이것은 계승 된 현재/이전 액세스 쿼리입니다. 지난 연도 사례 로그를 검색해야합니다. Where 절에서 더 나은 현재 날짜를 쓰려면 어떻게해야합니까?더 나은 현재 날짜/시간 구문이 필요합니다.

Select (ID,DateLog,TimeLog) 
    From tblActiveCase 
    WHERE (((DatePart("yyyy",[DateLog])) Between DatePart("yyyy",Now())-1 And   
    DatePart("yyyy",Now()))) 

아니야 자,가요 새로운 StoredProc가이

Select (ID,DateLog,TimeLog) 
    From tblActiveCase 
    WHERE DateLog <= DATEADD(YEAR, -1, GETDATE()) 

를 작성하는 더 좋은 방법은 무엇입니까?

+0

분명히 : 정확하게 1 년 전에 현재 날짜를 얻어야합니다. –

+2

'<='이 아니라'> ='이 필요하다고 생각합니다. 데이터베이스의 날짜가 DateTime 인 경우 시간을 00:00:00으로 설정하는 것이 가장 좋을 것입니다. 그렇지 않으면 조회가 오후에 실행 된 경우 1 년 전에 작성된 레코드가 누락됩니다. –

+0

MS Access * 또는 * SQL Server인지 여부를 명확히 할 수 있습니까? 후자는 질문에 태그를 추가 한 것입니다. –

답변

0
declare @date date 
set @date = DATEADD(YEAR, -1, GETDATE()) 

    Select (ID,DateLog,TimeLog) 
     From tblActiveCase 
     WHERE DateLog >= @date 
+0

Access에서'DECLARE'를 사용할 수 있습니까? 나는 그것을 찾았지만 아무 것도 발견 할 수 없었다. –

+0

오! SQL-SERVER-2008을 테제하고 저장 프로 시저를 언급합니다. 지금 op가 무슨 말을하고 있었는지 확신 할 수 없다. – Horaciux

+0

나는 해명을 요구하는 코멘트를 추가했다. SQL Server를 사용하면 훨씬 쉽습니다. –

관련 문제