[SQL] 어떻게 PostgreSQL의를 사용하여 이전 달의 마지막 날을 결정합니까?
SQL어떻게 PostgreSQL의를 사용하여 이전 달의 마지막 날을 결정합니까?
오늘의 날짜와 이전 달의 마지막 날 내에 기록을 결정하기 위해 PostgreSQL 데이터베이스를 조회 할 필요가있다. 즉, 나는 12 월 31 일, 2011 오늘 사이에 내리는 모든 것을 검색하고 싶습니다. 그래서 다음 달, 매달 사용하는 재이 쿼리는 쿼리는 현재 날짜 1 월 31 일, 2012 년에 근거 할 것이다 될 것입니다.
나는이 옵션을 본 적이 있지만 나는 기능 (가능한 경우) 사용하지 않는 것이 원합니다.
해결법
-
==============================
1.두 솔루션은 이전 달의 마지막 날을 포함하고 또한 "오늘"을 모두 포함한다.
두 솔루션은 이전 달의 마지막 날을 포함하고 또한 "오늘"을 모두 포함한다.
SELECT * FROM tbl WHERE my_date BETWEEN date_trunc('month', now())::date - 1 AND now()::date
당신은 일을 빼기 (그러나 타임 스탬프에서) 날짜에서 일반 정수 값을 뺄 수 있습니다. 이것은 가장 간단하고 빠른 방법입니다.
SELECT * FROM tbl WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day' AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
참고 나는 ( "내일 전에"~) 정확한 결과를 얻기 위해 두 번째 조건에 대해 <연산자를 사용하는 것이.
나는 두 번째 쿼리 날짜로 캐스팅하지 않습니다. 대신에 나는 앞뒤로과지지 않도록, 간격 '일일'을 추가합니다.
설명서의 날짜 / 시간 형식과 기능에서보세요.
-
==============================
2.이전 / 지난 달의 날짜를 얻는 경우 :
이전 / 지난 달의 날짜를 얻는 경우 :
SELECT (date_trunc('month', now())::date - 1) as last_month_date
결과 : 2012년 11월 30일를
이전 / 지난 달의 일수를 얻기 위해 :
SELECT DATE_PART('days', date_trunc('month', now())::date - 1) last_month_days
결과 : 30
-
==============================
3.이 시도:
이 시도:
SELECT ... WHERE date_field between (date_trunc('MONTH', now()) - INTERVAL '1 day')::date and now()::date ...
-
==============================
4.시험
시험
select current_date - cast((date_part('day', current_date) + 1) as int)
-
==============================
5.한 달에 단지 일 http://wiki.postgresql.org/wiki/Date_LastDay 걸릴 및 반환에 수정
한 달에 단지 일 http://wiki.postgresql.org/wiki/Date_LastDay 걸릴 및 반환에 수정
CREATE OR REPLACE FUNCTION calc_days_in_month(date) RETURNS double precision AS $$ SELECT EXTRACT(DAY FROM (date_trunc('MONTH', $1) + INTERVAL '1 MONTH - 1 day')::date); $$ LANGUAGE 'sql' IMMUTABLE STRICT; select calc_days_in_month('1999-05-01')
반환 (31)
-
==============================
6.참조는이 블로그에서 가져온 것입니다 :
참조는이 블로그에서 가져온 것입니다 :
당신은 아래와 같은 기능을 사용할 수 있습니다 :
CREATE OR REPLACE FUNCTION fn_GetLastDayOfMonth(DATE) RETURNS DATE AS $$ SELECT (date_trunc('MONTH', $1) + INTERVAL '1 MONTH - 1 day')::DATE; $$ LANGUAGE 'sql' IMMUTABLE STRICT;
샘플 실행 :
SELECT *FROM fn_GetLastDayOfMonth(NOW()::DATE);
from https://stackoverflow.com/questions/8944721/how-do-i-determine-the-last-day-of-the-previous-month-using-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 사용 액세스 SQL은 그룹화 된 순위를 할 수 (0) | 2020.05.05 |
---|---|
[SQL] 어떻게 SQL에서 두 날짜 사이에 "화요일"의 수를 계산하는? (0) | 2020.05.05 |
[SQL] 왜 PostgreSQL의 질의에 DESC를 주문할 때 NULL 값이 먼저 와야합니까? (0) | 2020.05.05 |
[SQL] 이 JasperReport에서 매개 변수 목록 "에서"SQL 통과 (0) | 2020.05.05 |
[SQL] 어떻게 체중을 고려하여 무작위로 하나 개의 행을 선택하려면? (0) | 2020.05.05 |