postgresql - PostgreSQL 中的小日期时间

标签 postgresql datetime

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

在 Postgres 中是否有等同于 SMALLDATETIME 的东西?

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

最佳答案

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

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

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 是开源的,这意味着人们需要做他们希望发生的事情。

关于postgresql - PostgreSQL 中的小日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21453184/

相关文章:

python - 在 Django + Python 3 中格式化日期以注释计数

Python 将纪元时间转换为星期几

sql - 使用 PostgreSQL 将 future 的月份加 1

excel - 如何在 VBA 语句中使用 WEEKNUM 函数?

mysql - 在通用 SQL 中同时检索(选择)或创建(插入)新行而不会发生冲突

typescript - TypeError : this. postgres.Pool 不是构造函数

c# - DateTime.Now - 一天的第一分钟和最后一分钟

python - 删除 pandas 数据框中具有特定日期时间值的某些行

arrays - 将嵌套的 JSONB 数组连接成单个字符串

ruby-on-rails - Rails ActiveRecord 连接到错误的 Postgres 数据库