0
아래 쿼리는 시간 소인을 날짜, forecast_day
및 시간, 즉 forecast_hour
로 나눕니다.자정 시간 소인의 이름을 이전 날의 시간 24로 변경하십시오.
내 문제는 전날 2016년 1월 31일의 forecast_day
아래 코드는 단지 2016년 2월 1일의 forecast_day
및 타임 스탬프에 대한 0의 forecast_hour
반환 (24)의 forecast_hour
을 반환 2016-02-01 00:00:00
의 타임 스탬프를 처리한다.
select
a.lat, a.lon,
date_trunc('day', a.foretime - interval '5 hours')::date as forecast_day,
extract(hour from a.foretime - interval '5 hours') as forecast_hour,
f.windspeed as forecast,
a.as_of - interval '5 hours' as latest_as_of
from weather.forecast f
join (select
foretime,
max(as_of) as as_of,
lat, lon
from weather.forecast
where date_trunc('day', foretime - interval '5 hours')::date - as_of >= interval '9 hours'
group by foretime, lat, lon) a using (foretime, as_of, lat, lon)
23:59:59는 하루의 마지막 순간입니다. 24:00:00은 존재하지 않습니다. 0:00:00은 다음날입니다. 그것은 시간이 보편적으로 알려지는 방법입니다. 0:00:00에 이전 요일의 마지막 초를 나타내려면/case 문을 사용하여 0:00:00 시간을 day-1로 관리해야합니다. 하지만 왜?!? 0:00:00은 매일 0-1 초입니다! 당신이 원하는 것처럼 보이는 것은 0:00:01에 하루를 시작하는 것입니다. 그러나 그때까지는 초 전체가지나갔습니다! – xQbert
@xQbert 좋은 물건. 정보 주셔서 감사합니다. – otterdog2000