что я делаю не так?
Ничего плохого.
Как прокомментировал a_horse_with_no_name, вы видите эффект перехода на летнее время. В 2 часа ночи CET 28 марта часы пропускают один час и переходят прямо к 3 часам утра. Я предполагаю, что ваш часовой пояс составляет UTC+01
, поэтому вы видите это в 1:00> 2:00.
Этот конкретный день имеет только 23 часа: обе даты представляют один и тот же момент времени, который вы видим в результатах, сгенерированных to_timestamp()
.
Извлечение соответствующих эпох, вы также можете увидеть, что результаты идентичны:
select
to_timestamp('28/03/2010 01:00:00','DD/MM/YYYY HH24:MI:SS') "1 AM",
to_timestamp('28/03/2010 02:00:00','DD/MM/YYYY HH24:MI:SS') "2 AM",
extract(epoch from to_timestamp('28/03/2010 01:00:00','DD/MM/YYYY HH24:MI:SS')) "1 AM epoch",
extract(epoch from to_timestamp('28/03/2010 02:00:00','DD/MM/YYYY HH24:MI:SS')) "2 AM epoch"
1 AM | 2 AM | 1 AM epoch | 2 AM epoch
:--------------------- | :--------------------- | :--------- | :---------
2010-03-28 02:00:00+01 | 2010-03-28 02:00:00+01 | 1269738000 | 1269738000
Это только один из много трюков, связанных с работой с датами. С точки зрения Postgres 'вы ничего не можете с этим поделать: ваше приложение должно это обработать.