Es hat nichts mit date_trunc
zu tun ... sobald Sie den Dezimalpunkt eingeführt haben, wird 23:59.9999999999
als Minuten und Sekunden und nicht als Stunden und Minuten interpretiert.
Ohne Dezimalpunkt
db=# select '2016-01-03 23:59'::timestamp;
timestamp
---------------------
2016-01-03 23:59:00
(1 row)
mit Komma-
db=# select '2016-01-03 23:59.9999999'::timestamp;
timestamp
---------------------
2016-01-03 00:24:00
(1 row)
Es ist verständlich, gegeben, was Sie zurück zu bekommen erwarteten, aber Sie scheinen bis 24 Minuten falsch verstanden zu haben, wie 24 Stunden im Ergebnis hier.
Als Randnotiz, in der Rundung Kicks, wenn Sie sechs Ziffern gehen vorbei (das heißen Mikrosekunden) nach dem Komma:
db=# select '2016-01-03 23:59.999999'::timestamp;
timestamp
----------------------------
2016-01-03 00:23:59.999999
(1 row)
'23: 59.9999999999' sind 23 Minuten und 59,999 Sekunden .... – tkausl
mit anderen Worten, Ihre "um Warte" Version vergessen, die Stunden anzugeben. –
Ja. Aber das sollte in "2016-01-04 00: 00" übergehen. Es gibt keine Zeit wie 24: 00. Es verhält sich für "Mikrosekunden" gleich. –