PostgreSQL, "오늘"을 기준으로 날짜 확인


103

누군가 Postgres를 도울 수 있는지 궁금합니다. mydatepostgres 날짜 유형 인 열이있는 테이블이 있습니다 . 다음과 같이하고 싶습니다.

SELECT * FROM MyTable WHERE mydate > [Today-1year]

이전에 Postgres를 사용해 본 적이 없으며 일부 기능의 이름 만 알면됩니다. 참조를 직접 찾아 보겠습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

감사!


2
기록을 위해 문서는 여기에 있습니다. 익숙해지는 데 약간의 시간이 걸리지 만 매우 포괄적입니다.
기금 모니카의 소송

답변:


174
select * from mytable where mydate > now() - interval '1 year';

당신은 단지 날짜와하지에 대한 시간을 걱정하는 경우, 대신 current_datenow()


이것은 완벽 해요! 감사합니다
JustGage 2017 년

1
참고 now()이 범위는 단지 일 오늘의 년 전에 정확히에서와 부분 일의 일부를 포함하므로, 소인입니다. 하루 종일 필터링하려면 now()::dateAlex Howansky가 제안한대로 캐스트하십시오 .
tokenizer_fsj

1
사용 @tokenizer_fsj current_date대신now()
폴 Tomblin

66

나는 이것이 그것을 할 것이라고 생각한다.

SELECT * FROM MyTable WHERE mydate > now()::date - 365;

10
와 달리 interval '1 year'윤년을 존중하지 않습니다. 그것은 당신의 문제가 아닐 수도 있지만, 그렇다면 내 대답을 사용하십시오.
Paul Tomblin

이것은 받아 들여진 대답이어야합니다. now()타임 스탬프를 반환하므로을 빼면 '1 day'쿼리하려는 하루 중 일부를 필터링 할 가능성이있는 타임 스탬프가 생성됩니다. 대부분의 사람들은 하루 종일 필터링하기를 원하므로 now()::date또는 사용 CURRENT_DATE이 필요합니다.
tokenizer_fsj

9

현재 날짜에서 1 년을 뺀 값이 표시됩니다.

select now() - interval '1 year';

5

age()기능을 사용하여 확인할 수도 있습니다.

select * from mytable where age( mydate, now() ) > '1 year';

age() 간격을 반환합니다.

예를 들어 age( '2015-09-22', now() )반환합니다-1 years -7 days -10:56:18.274131

postgresql 문서 참조


말거야 내가 age()PostgreSQL의 전용 기능입니다 (2018년 10월 5일은)
loxaxs

이드 질문 @loxaxs
hd1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.