Dzieje się tak z powodu czasu letniego, który zaczyna się tego dnia, więc wszystkie godziny między 1:00 a 2:00 są nieważne. Przekonasz się, że problem faktycznie zaczyna się o „01:00:00” i kończy się o „01:59:59”:
create table t (created_at timestamp null default current_timestamp);
insert into t values('2019-03-31 00:59:59');
insert into t values('2019-03-31 01:00:00');
insert into t values('2019-03-31 01:59:59');
insert into t values('2019-03-31 02:00:00');
select * from t
Wyjście:
created_at
2019-03-31 00:59:59
2019-03-31 02:00:00
Zmiana strefy czasowej systemu na taką, która nie ma czasu letniego, rozwiąże problem.