PostgreSQL中的smalldatetime

时间:2014-01-30 09:59:59

标签: postgresql datetime

我有一个包含数百万个日期/时间数据行的PostgreSQL数据库。数据的时间范围是从2004年到现在。时区始终为UTC。 由于我的虚拟主机帐户上的磁盘空间有限,我希望尽可能减少数据库大小。我知道在Microsoft SQL Server中有一个4字节大小的SMALLDATETIME数据类型。

Postgres中是否存在与SMALLDATETIME相同的内容?

(注意:我查看了Postgres手册,但所有'日期和时间'都是8个字节.4字节'date'数据类型不符合我的需要,因为我需要在几分钟内解决。)

1 个答案:

答案 0 :(得分:2)

不,没有这样的类型。对于一些用例来说这很好,但它不受支持。

作为妥协,您可以做的是存储自偏移时期以来的秒数:

extract(epoch from mydate) - extract(epoch from TIMESTAMP '2004-01-01 00:00:00')

integer列中,然后即时重建日期。这会对性能产生影响,更重要的是,为了提高可读性,它会起作用。

SELECT to_timestamp(mydatesecondssince2004 + extract(epoch from TIMESTAMP '2004-01-01 00:00:00')) FROM mytable

或者,您可以是决定添加'smalldate'和'smalltimestamp'类型的人; PostgreSQL是开源的,这意味着人们需要做的事情,如果他们希望它们发生。