如何在 Postgresql 中将 bigint 字段格式化为日期?

发布于 2024-10-28 04:50:35 字数 189 浏览 1 评论 0原文

我有一个包含 bigint 类型字段的表。该字段存储时间戳。 我想像这样设置字段的日期格式:

to_char( bigint_field,'DD/MM/YYYY HH24:MI:SS')

我收到以下错误:

ERROR: multiple decimal points
État SQL :42601

I have a table with a field of type bigint. This field store a timestamp.
I want to date format the field like this :

to_char( bigint_field,'DD/MM/YYYY HH24:MI:SS')

I get the following error :

ERROR: multiple decimal points
État SQL :42601

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鱼窥荷 2024-11-04 04:50:35
TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
荒岛晴空 2024-11-04 04:50:35

这对我有用

to_timestamp( bigint_field/1000)::date

This is what worked for me

to_timestamp( bigint_field/1000)::date
半世晨晓 2024-11-04 04:50:35

这取决于 bigint 值代表什么 - 纪元时间的偏移量或不。

select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')

回报

“2012-08-22 19:35:32+00”

This depends on what the bigint value represents - offset of epoch time, or not.

select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')

returns

"2012-08-22 19:35:32+00"

若能看破又如何 2024-11-04 04:50:35

我是这样做的:

to_timestamp(to_char(20120822193532, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS')

结果如下:

2012-08-22 19:35:32

您也可以在选择语句中使用它,只需与数据库列交换数字即可。

逐步说明:

to_char(20120822193532, '9999-99-99 99:99:99')

这将创建一个如下所示的字符串:

“2012-08-22 19:35:32”

现在我们可以轻松地将其转换为时间戳:

to_timestamp('2012-08-22 19:35:32','YYYY-MM-DD HH24:MI:SS')

结果看起来与以前相同,但现在它是一个时间戳。

另外,如果您将其用于类似命令,

CREATE TABLE table2 AS SELECT to_timestamp(to_char(tb1.date, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS') AS realDate FROM table1 AS tb1; 

则最终可能会得到 timstamptz (时间戳带有时区)而不是 timestamp< /strong>(时间戳不带时区)。你可以这样改变它:

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;

I did it like this:

to_timestamp(to_char(20120822193532, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS')

the result looks like this:

2012-08-22 19:35:32

you also can use this in you select statemant, just exchange the number with your database colunm.

Step by Step Explanation:

to_char(20120822193532, '9999-99-99 99:99:99')

This will create a string like this:

"2012-08-22 19:35:32"

now we can easiely convert this into a timestamp:

to_timestamp('2012-08-22 19:35:32','YYYY-MM-DD HH24:MI:SS')

Result will look the same as before, but it's now a timestamp.

Also, if you use this for a command like

CREATE TABLE table2 AS SELECT to_timestamp(to_char(tb1.date, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS') AS realDate FROM table1 AS tb1; 

you might end up with timstamptz (timestamp with time zone) instead of timestamp (timestamp without time zone). You can change it like this:

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文