PostgreSQL - update 시간 interval

PostgreSQL - update 시간 interval
Photo by Lukas Blazek / Unsplash

현재 저장된 시간에서 몇 시간 앞으로 뒤로 빼거나 더하고 싶다면 interval 함수를 이용하세요.

몇 시간 되돌리기

시간만 되돌리기, 나머지는 그대로 두고 그냥 코드를 보자.

현재 저장 시간에서 한국 시차 적용을 잘못해서 다시 9시간을 뒤로 돌리는 코드

UPDATE public.testxapi_result SET starttime = starttime - interval '9 hours', endtime = endtime - interval '9 hours' 
where orderitem_id=315;

SELECT * FROM public.testxapi_result
where orderitem_id=315
ORDER BY id DESC LIMIT 100

특정 필드 날짜와 맞추기

생성 날짜와 로그 기록 날짜가 다른 경우, 난감하다. 컴퓨터 시간이 틀렸거나 머 소스 쪽에서 그렇게 보내주면 어쩔 수 없다. 보정이 필요하다.
날짜의 경우에는 시스템 시간을 쓰게 되므로, 좀 이성적인 시간으로 생각하고 분, 초 등의 정보는 남기고 날짜 부분만 바꾸고 싶다면.. 아래 예는 시간 정보까지 바꾸는 것임 (아래 코드의 hour 부분을 day 로 바꾸면 날짜까지만 바꿀 수 있다.)

함수가 딱 없어서 자기 필드에서 날짜를 싹 빼버리고, 그 부분을 다른 필드 값을 더해주는 형태로 구현했다. 짱똘을 좀 굴려야 😂

UPDATE public.testxapi_result SET 
starttime = starttime - date_trunc('hour', starttime) + date_trunc('hour', created_at)
, endtime = endtime - date_trunc('hour', endtime) + date_trunc('hour', created_at)
where serial='00:08:DC:5E:B6:9C';
-- orderitem_id= 200

SELECT * from public.testxapi_result 
where serial='00:08:DC:5E:B6:9C';

결과는,

참고 사이트

9.9. Date/Time Functions and Operators
9.9. Date/Time Functions and Operators 9.9.1. EXTRACT, date_part 9.9.2. date_trunc 9.9.3. date_bin 9.9.4. AT TIME ZONE 9.9.5. Current Date/Time 9.9.6. Delaying …
timestamp - intervaltimestamp
Subtract an interval from a timestamp
timestamp '2001-09-28 23:00' - interval '23 hours'2001-09-28 00:00:00