2017-12-13 15 views
4

파이어 버드를 쿼리하여 지난 1 일부터 마지막 ​​날까지 데이터를 얻으려고합니다 (월에 따라 30 또는 31). 아래 코드를 사용하면 현재 날짜 (예 : 2011 년 11 월 14 일, 2014 년 12 월 13 일)로 날짜가 변경됩니다.파이어 버드에서 첫날부터 마지막 ​​날까지의 데이터를 가져옵니다.

코드 :

WHERE DATE >= DATEADD(MONTH,-1, CURRENT_TIMESTAMP(2)) AND DATE<= 'TODAY' 

원하는 출력 2017년 11월 1일입니다 - 2017년 11월 30일

을 할 수있는 올바른 방법은 무엇입니까?

답변

3

나는 파이어 버드를 사용하지 않는하지만 난 상당히 광범위하게 PostgreSQL을 사용했습니다 나는이 일을해야한다고 생각 : CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1는 이번 달과 dateadd의 처음으로 돌아 가야한다

WHERE 
    DATE BETWEEN dateadd(month, -1, CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1) 
    AND CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) 

설명 - 1 개월 전 달로 가져 가야합니다. 그런 다음 CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) 또는 다른 말로하면 2013 년 12 월 13 일 - 13 일이 11 월 마지막 날이어야합니다. 내 손가락을 건너. 행운을 빕니다.

+2

Firebird의 경우 'addmonth'대신 [dateadd (-1, month, ...)'] (https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/)를 사용하십시오. fblangref25-functions-scalarfuncs.html # fblangref25-functions-scalarfuncs-dateadd) (또는'dateadd (-1 개월 ~ ...)') –

+0

안녕하세요. 완벽 해! 그것은 내가 필요한 것처럼 효과가있었습니다. 고마워요! :) –

+1

그리고 나는 단지 주석에 쉼표로 구분 된 변형에 대한 인수 순서가 잘못된 것으로 나타났습니다. 당신이 맞아 보인다;) 하나의 약간의 '문제'는 타임 스탬프를 비교할 때, 현재 시간을 사용한다. (따라서 2017-11-01 21:06 - 2017-11-30 21:06, 00:00 - 23이 아니다. : 59) –