DATASET QUERY
DROP TABLE IF EXISTS mst_users_with_dates;
CREATE TABLE mst_users_with_dates (
user_id varchar(255)
, register_stamp varchar(255)
, birth_date varchar(255)
);
INSERT INTO mst_users_with_dates
VALUES
('U001', '2020-02-28 10:00:00', '2000-02-29')
, ('U002', '2020-02-29 10:00:00', '1992-03-29')
, ('U003', '2020-03-01 10:00:00', '2002-01-29')
, ('U004', '2020-03-01 11:00:00', '1988-08-21')
, ('U005', '2020-03-02 20:00:00', '1995-10-07')
, ('U006', '2020-03-03 10:00:00', '2010-01-01')
;
미래/과거의 날짜/시간 계산
interval 타입은 연/월/일 등의 단위와 결합하여 날짜와 시간 연산이 가능한 타입이다.
select
user_id
, register_stamp::timestamp as register_stamp
, register_stamp::timestamp + '1 hour'::interval as after_1hour
, register_stamp::timestamp - '30 minutes'::interval as before_30minutes
, register_stamp::date as register_date
, (register_stamp::date + '1 day'::interval) as after_1day
, (register_stamp::date - '1 month'::interval) as before_1month
from mst_users_with_dates;
![[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF) 0](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
날짜들끼리 차이 계산
select
user_id
, current_date as today
, register_stamp::date as register_date
, current_date - register_stamp::date as diff
from mst_users_with_dates;
![[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF) 1](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
CF) MYSQL
DATEDIFF
SELECT DATEDIFF('2022-03-19 11:44:59', '2020-03-01 00:00:00');
=> 결과 : 748
TIMESTAMPDIFF
SELECT TIMESTAMPDIFF(minute, '2020-03-01 00:00:00', '2022-03-19 11:44:59');
- TIMESTAMPDIFF(형식, 앞날짜, 뒷날짜) 순으로 세팅한다
=> 결과 1077824
형식에 아래와 같이 세팅 가능하다
- year : 년
- quarter : 분기
- month : 월
- week : 주
- day : 일
- hour : 시
- minute : 분
- second : 초
나이계산(Age)
PostgreSQL은 AGE함수를 지원합니다, 연도를 넣어주면 나이를 출력합니다. 특정날짜를 지정하면 해당 날짜에서의 나이를 출력합니다.
select
user_id
, current_date as today
, register_stamp::date as register_date
, birth_date::date as birth_date
, EXTRACT(year from age(birth_date::date)) as current_age
, EXTRACT(year from age(register_stamp::date, birth_date::date)) as age_diff
from mst_users_with_dates;
![[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF) 2](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
https://link.coupang.com/a/cmwYCQ
LG전자 FHD PC 모니터 - 게이밍 모니터 | 쿠팡
현재 별점 4.8점, 리뷰 464개를 가진 LG전자 FHD PC 모니터! 지금 쿠팡에서 더 저렴하고 다양한 게이밍 모니터 제품들을 확인해보세요.
www.coupang.com
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
728x90
반응형
'SQL & DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] generate_series을 활용한 날짜/시간 더미 데이터 생성 (월단위, 일단위, 시간단위) (1) | 2024.06.30 |
---|---|
[PostgreSQL] PostgreSQL의 특징과 장단점 (1) | 2023.12.08 |
[PostgreSQL] CSV File를 Table에 삽입(Import)하기. (2) | 2023.03.05 |
[PostgreSQL] 값 비교 - 조건을 0과 1로 표현하기 (0) | 2023.03.05 |
[PostgreSQL] 중복행 제거 (0) | 2023.02.18 |