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は1日の最後の秒です。 24:00:00は存在しません。 0:00:00は翌日です。それは時間が普遍的に知られている方法です。 0:00:00に前日の最後の秒を表す場合は、/ case文を使用して0:00:00の時刻をday-1として管理する必要があります。しかし、なぜ?!? 0:00:00は毎日0-1秒です!あなたがしたいように思えるものは0:00:01に始まりますが、それまでに1秒が過ぎました! – xQbert
@xQbert良いもの。情報をありがとう。 – otterdog2000