在 postgres 中日期显示为 DATE HH:MI:SS

Date display as DATE HH:MI:SS in postgres

我在数据库中有一个存储 UTC 时间的 date_timestamp 列。 示例:

2022-01-09 15:38:47.487-05
2022-01-08 21:28:30.989492-05

但在报告中,我只想显示 DATE 和 HH:MI:SS。 我想将其显示为日期而不是字符串。

例如:

2022-01-09 15:38:47
2022-01-08 21:28:30

进行字符转换,例如 select to_char(timestampcreated,'YYYY-MM-DD HH:MI:SS') cc 以我想要的方式显示数据,但它是字符而不是日期。

“字符”数据的任何数据类型转换都被打乱了。我要么可以得到日期,要么可以得到时间,但不能同时得到两者。

我怎样才能做到这一点?

如果你真的想要一个 date:

select '2022-01-09 15:38:47.487-05'::timestamptz::date; 

2022-01-09

select pg_typeof('2022-01-09 15:38:47.487-05'::timestamptz::date); 

date

虽然你显示的期望结果是一个时间戳,所以:

select date_trunc('second', '2022-01-09 15:38:47.487-05'::timestamp);

2022-01-09 15:38:47

select pg_typeof(date_trunc('second', '2022-01-09 15:38:47.487-05'::timestamp));
         
timestamp without time zone

尽管@a_horse_with_no_name 说我不确定为什么报告输出很重要,无论是字符还是 date/time 类型。

有关 date_trunc 的更多信息,请参阅 date_trunc