def dump(self, obj: datetime) -> bytes:
delta = obj - _pg_datetimetz_epoch
secs = delta.total_seconds()
- if secs < self._delta_prec_loss:
+ if -self._delta_prec_loss < secs < self._delta_prec_loss:
micros = int(1_000_000 * secs)
else:
micros = delta.microseconds + 1_000_000 * (
def dump(self, obj: datetime) -> bytes:
delta = obj - _pg_datetime_epoch
secs = delta.total_seconds()
- if secs < self._delta_prec_loss:
+ if -self._delta_prec_loss < secs < self._delta_prec_loss:
micros = int(1_000_000 * secs)
else:
micros = (
"val, expr",
[
("min", "0001-01-01 00:00"),
+ ("258,1,8,1,12,32,358261", "0258-1-8 1:12:32.358261"),
("1000,1,1,0,0", "1000-01-01 00:00"),
("2000,1,1,0,0", "2000-01-01 00:00"),
("2000,1,2,3,4,5,6", "2000-01-02 03:04:05.000006"),
("min~2", "0001-01-01 00:00"),
("min~-12", "0001-01-01 00:00-12:00"),
("min~+12", "0001-01-01 00:00+12:00"),
+ ("258,1,8,1,12,32,358261~1:2:3", "0258-1-8 1:12:32.358261+01:02:03"),
("1000,1,1,0,0~2", "1000-01-01 00:00+2"),
("2000,1,1,0,0~2", "2000-01-01 00:00+2"),
("2000,1,1,0,0~12", "2000-01-01 00:00+12"),
("2000,1,1,0,0~01:02:03", "2000-01-01 00:00+01:02:03"),
("2000,1,1,0,0~-01:02:03", "2000-01-01 00:00-01:02:03"),
("2000,12,31,23,59,59,999999~2", "2000-12-31 23:59:59.999999+2"),
+ ("2300,1,1,0,0,0,1~1", "2300-01-01 00:00:00.000001+1"),
("3000,1,1,0,0~2", "3000-01-01 00:00+2"),
+ ("7000,1,1,0,0,0,1~-1:2:3", "7000-01-01 00:00:00.000001-01:02:03"),
("max~2", "9999-12-31 23:59:59.999999"),
],
)