지난 10 일 동안의 날짜로 기록을 나열하는 방법은 무엇입니까?


101
SELECT Table.date FROM Table WHERE date > current_date - 10;

PostgreSQL에서 작동합니까?

답변:


191

예, 이것은 PostgreSQL에서 작동합니다 ( " date " 열 이 데이터 유형 이라고 가정 date). 그냥 시도해 보지 않겠습니까?

표준 ANSI SQL 형식은 다음과 같습니다.

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

읽기 쉽도록하는 형식을 선호합니다 (하지만 current_date - 10).


1
쿼리는 다음과 같아야합니다. SELECT Table.date FROM Table WHERE date> current_date-interval '10 day ';
user2694306

4
@ user2694306 : interval '10 day'Postgres 구문입니다. interval '10' day포스트 그레스에 의해 구문을 SQL 표준을 기반으로하고도 지원됩니다
a_horse_with_no_name

1
간격은 9 여야합니다 . 10은 실제로 오늘부터 11 일을 돌려줍니다.
데이비드 그는

1
@DavidHe : 이것은 원래 답변과 같은 일을합니다. 어떤 사용 10하지9
a_horse_with_no_name

3
참고 사항 : Redshift에서 @ user2694306의 공식은 '10 일 '간격으로 작동합니다. 간격 '10'일은 Redshift에서 작동하지 않습니다.
Ben


9

내 테스트 (및 PostgreSQL dox ) 에서 이해 한 것은 따옴표가 다른 답변과 다르게 수행되어야하며 다음과 같이 "day"도 포함해야한다는 것입니다.

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

여기에 설명되어 있습니다 (Postgres db에서 실행할 수 있어야 함).

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

결과:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00

사실, 나는 브래들리의 대답이 옳았다는 것을 알지 못했습니다. 어쨌든, 나는 그것이 올바른 방법이라는 증거로 여기에 남겨 둘 것입니다. 받아 들여진 대답이 잘못되었습니다 (적어도 제가 실행중인 Postgre 버전의 경우)
매우 불규칙적입니다

0

데이터 유형을 확인합니다.

current_date에는 "date"데이터 유형이 있고 10은 숫자이고 Table.date-테이블을 확인해야합니다.


0

다음과 같이 사용할 수도 있습니다.

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';

between이이 올바르게으로 수행 될 수 있도록, 먼저 가장 낮은 값이어야한다 SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
유형

0

현재 날짜 대신 주어진 날짜로 작업하려면 쿼리를 일반화하십시오.

SELECT Table.date
  FROM Table 
  WHERE Table.date > '2020-01-01'::date - interval '10 day'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.