【发布时间】:2020-06-15 14:54:35
【问题描述】:
我必须在 PostgreSQL 中创建一个表。其中一列是add_date,它应该包含插入行的当前日期。
我很困惑:
我是否应该创建一个列为add_date DATE NOT NULL DEFAULT CURRENT_DATE 并让数据库完成生成日期的工作。
或
我应该将该列声明为 VARCHAR 并使用 java 传递当前日期。
什么应该是最好的方法,我为什么要选择一个?
谢谢。
【问题讨论】:
-
小心。 PostgreSQL 只在日期列中存储日期,而不是日期时间,这与 Oracle 不同。如果你想存储日期时间使用时间戳类型。
-
@AlexanderPrisadkov:除了 Oracle 之外的每个数据库都在
date列中存储没有时间的日期值。 -
@AlexanderPrisadkov SQL 标准将
Date类型定义为仅表示日期,没有时间。为了跟踪某个时刻(日期、时间和时区或与 UTC 的偏移量),标准定义了TIMESTAMP WITH TIME ZONE。要跟踪有时间但没有区域/偏移量(不是片刻)的日期,标准定义了TIMESTAMP WITHOUT TIME ZONE。 Postgres 在这件事上遵循标准。 -
@a_horse_with_no_name ,@BasilBourque 伙计们看看标签:)
datetime包括在内。 -
@a_horse_with_no_name 不是每个数据库都会在日期列中存储没有时间的日期值。 Firebird 或 apache phoenix 的一些方言呢?
标签: java postgresql datetime database-design