0
Следующий запрос разбивает временную метку на дату, forecast_day
и час, forecast_hour
.Переименовать полуночную метку в качестве Часа 24 предыдущего дня
Моя проблема перекачивает метку 2016-02-01 00:00:00
вернуть forecast_day
в предыдущий день 2016-01-31 и forecast_hour
из 24. Код ниже просто возвращает forecast_day
из 2016-02-01 и forecast_hour
0 для такой метки времени.
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 представляли последнюю секунду предыдущего дня, вам необходимо использовать операторы if/case для управления 0:00:00 как день-1. Но почему?!? 0:00:00 - 0-1 секунды каждого дня! похоже, что вы хотите сделать, это начать день в 0:00:01, но к тому времени прошла целая секунда! – xQbert
@xQbert Хороший материал. Спасибо за информацию. – otterdog2000