|
33 | 33 | INTERVALOID: datetime.timedelta, |
34 | 34 | } |
35 | 35 |
|
| 36 | +seconds_in_day = 24 * 60 * 60 |
| 37 | +seconds_in_hour = 60 * 60 |
| 38 | + |
36 | 39 | pg_epoch_datetime = datetime.datetime(2000, 1, 1) |
37 | 40 | pg_epoch_date = pg_epoch_datetime.date() |
38 | 41 | pg_date_offset = pg_epoch_date.toordinal() |
|
79 | 82 | lib.date_negative_infinity: negative_infinity_date, |
80 | 83 | } |
81 | 84 |
|
82 | | -date_pack = compose(( |
83 | | - methodcaller("toordinal"), partial(add, pg_minus_date_offset), lib.date_pack, |
84 | | -)) |
85 | | -date_unpack = compose(( |
86 | | - lib.date_unpack, partial(add, pg_date_offset), datetime.date.fromordinal |
87 | | -)) |
88 | | - |
89 | | -seconds_in_day = 24 * 60 * 60 |
90 | | -seconds_in_hour = 60 * 60 |
| 85 | +def date_pack(x, |
| 86 | + pack = lib.date_pack, |
| 87 | + offset = pg_date_offset, |
| 88 | + get = date_pack_constants.get, |
| 89 | +): |
| 90 | + return get(x) or pack(x.toordinal() - offset) |
| 91 | +def date_unpack(x, |
| 92 | + unpack = lib.date_unpack, |
| 93 | + offset = pg_date_offset, |
| 94 | + from_ord = datetime.date.fromordinal, |
| 95 | + get = date_unpack_constants.get, |
| 96 | +): |
| 97 | + return get(x) or from_ord(unpack(x) + pg_date_offset) |
91 | 98 |
|
92 | 99 | def timestamp_pack(x): |
93 | 100 | """ |
@@ -264,11 +271,7 @@ def select_day_format(oid, typio, get = id_to_io.__getitem__): |
264 | 271 | return get((time_type(typio), typio.database.version_info[:2] <= (8,0), oid)) |
265 | 272 |
|
266 | 273 | oid_to_io = { |
267 | | - DATEOID : ( |
268 | | - proc_when_not_in(date_pack, date_pack_constants), |
269 | | - proc_when_not_in(date_unpack, date_unpack_constants), |
270 | | - datetime.date, |
271 | | - ), |
| 274 | + DATEOID : (date_pack, date_unpack, datetime.date,), |
272 | 275 | TIMEOID : select_format, |
273 | 276 | TIMETZOID : select_format, |
274 | 277 | TIMESTAMPOID : select_format, |
|
0 commit comments