在PostgreSQL中将Bigint转换为日期

qxgroojn  于 2022-12-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(274)

我有一个BigINT列,其值如下所示:20140130。这需要转换为日期列2014/01/30,因此使用PostgreSQL格式为yyyy/MM/dd
拜托,这怎么可能?

d8tt03nd

d8tt03nd1#

将该值转换为字符串,然后使用to_date()函数:

select to_date(20140130::text, 'yyyymmdd');

手册中关于to_date()函数的更多详细信息:
http://www.postgresql.org/docs/current/static/functions-formatting.html
手册中有关强制转换值的详细信息:
http://www.postgresql.org/docs/current/static/sql-expressions.html#SQL-SYNTAX-TYPE-CASTS
converted to a date column ... format yyyy/MM/dd
date列***不***具有“格式”。您看到的应用于date(或timestamp)列的任何格式都是由客户端应用程序(例如psql或任何其他SQL客户端)完成的。
to_date()函数的结果是一个date,可以使用to_char()'函数将其格式化为任何显示格式。

select to_char(to_date(20140130::text, 'yyyymmdd'), 'dd.mm.yyyy');
select to_char(to_date(20140130::text, 'yyyymmdd'), 'yyyy/mm/dd');

但是格式化日期最好留给前端,不应该用SQL来完成。
您还应该认真地考虑修改您的表设计,使用正确的date日期列,而不是“编码”的bigint值。

相关问题