java - postgresql Date 如何关联 java Date?

标签 java postgresql timestamp

我正在开发一个项目,需要获取新客户创建帐户的时间,然后将该时间保留在数据库中以供以后使用。但是,我不太了解postgresql的时间戳数据类型?它是一个相对于java的字符串日历或日期对象(你可以给我一个插入和检索的例子)吗?

最佳答案

正如 @MadProgrammer 提到的,TimestampDate 在 Java 和 Postgres 中都是不同的。虽然可以使用 java.sql.Timestamp,但我通常将 POJO 中的 Postgres 时间戳表示为 改为字符串

这样做的原因是它消除了许多与时间戳相关的潜在问题(时区、不同格式等),因为人们可以简单地使用Postgres> 时间戳的文本表示,它仍然可以与Postgres来回传递。此规则的异常(exception)情况是,如果您确实需要它真正成为 Java 端的 Timestamp,因为,比如说,您是 ETL将其从 Postgres 外部转移到其他平台,因此不能像从 获取数据时那样依赖 Postgres 文本表示形式Postgres 并将其放回 Postgres。

假设您的时间戳为 2014-08-08 02:11:21.215428,表格如下:

create table foo
(
  id serial,
  created timestamp without time zone default now(),
  notes text
);

您可以在POJO中表示如下:

class FooBean
{
    int id;
    String created;
    String notes;
};

要记住的关键是,如果您要在另一个查询中使用该值,则需要将其转换时间戳(即notes::timestamp),否则 Postgres 将抛出强制转换异常。

编辑以回应OP的评论:

此方法也有助于掩盖与时区相关的头痛。时区也可以以文本方式表示,只需在字符串上使用 -XX 表达式即可。例如,无时区字符串 2014-08-08 02:11:21.215428 可以通过字符串 2014-08-08 02:11:21.215428-04 表示时区>.

正如 @MadProgrammer 在下面的评论中提到的,Postgres 也有一个带有时区的时间戳类型;对于上面的例子,我只是碰巧选择了没有的。

关于java - postgresql Date 如何关联 java Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196871/

相关文章:

python - 在 Python 中使用数据帧上的时间戳值的 bool 过滤器

java - 如何检查一个字符串只包含数字和小数点?

java - JvisualVM 中的采样器和探查器有什么区别?

java - Android 中的纪元时间与 PHP 不同

sql - 动态值的 Postgres jsonb 查询

postgresql - PG::ConnectionBad Postgres 集群宕机

java - Anylogic:本地数据库连接

sql - 在另一个表中的一行的 UPDATE 中使用同一个表中的多行

sql - 如何从 PostgreSQL 选择查询中的时间戳获取日期和时间?

sql - 重复时间(1 AM-1 :59:59 AM) on first Sunday of November - Daylight Savings ending day - Oracle