在 SQL 中从 POSTGRE/SQL 数据库转换 UTC 时间字段

发布于 2024-11-29 12:21:39 字数 157 浏览 1 评论 0原文

我的数据库有问题。 我从来没有习惯在 PostgreSQL 中工作,我想从 UTC 日期时间字段中进行选择并获得 GMT 日期时间作为结果。

实际上我的要求是:从位置选择 dateheure 做我想做的事情的 Postgresql 请求应该是什么???

多谢 格韦纳尔

I am having a problem from my database.
I never been used to work in PostgreSQL, and i would like to make a select from a UTC datetime field and getting a GMT Datetime as result.

Actually my request is : select dateheure from position
What should be the Postgresql request to do what i want to do ???

Thanks a lot
Gwenael

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

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

发布评论

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

评论(2

‘画卷フ 2024-12-06 12:21:39

PostgreSQL确实有两种日期时间类型

  • 没有时间的时间戳zone (默认隐式 timestamp
  • timestamp with time zone

我猜你有带有 UTC 日期时间的表(没有时区类型):

CREATE TEMP TABLE datetimetest
(
    datetime timestamp
);

\d datetimetest
           Table "pg_temp_1.datetimetest"
  Column  |            Type             | Modifiers 
----------+-----------------------------+-----------
 datetime | timestamp without time zone | 

INSERT INTO datetimetest SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC';

SELECT datetime FROM datetimetest;
          datetime          
----------------------------
 2011-08-15 15:04:06.507166
(1 row)

要获取某个时区的日期时间你可以使用时区 构造:

SET TIME ZONE 'UTC';
SELECT datetime AT TIME ZONE 'GMT-5' FROM datetimetest;
           timezone            
-------------------------------
 2011-08-15 10:04:06.507166+00
(1 row)

PostgreSQL does have two datetime types:

  • timestamp without time zone (default implicit timestamp)
  • timestamp with time zone

I guess that you have table with UTC datetime (without time zone type):

CREATE TEMP TABLE datetimetest
(
    datetime timestamp
);

\d datetimetest
           Table "pg_temp_1.datetimetest"
  Column  |            Type             | Modifiers 
----------+-----------------------------+-----------
 datetime | timestamp without time zone | 

INSERT INTO datetimetest SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC';

SELECT datetime FROM datetimetest;
          datetime          
----------------------------
 2011-08-15 15:04:06.507166
(1 row)

To get datetime in some timezone you could use AT TIME ZONE construct:

SET TIME ZONE 'UTC';
SELECT datetime AT TIME ZONE 'GMT-5' FROM datetimetest;
           timezone            
-------------------------------
 2011-08-15 10:04:06.507166+00
(1 row)
断念 2024-12-06 12:21:39

在另一篇文章中我使用CHECK() 约束,以确保您仅存储和接收数据库中的 UTC。希望它有帮助。

In a different post I use a CHECK() constraint to make sure that you only store and receive UTC out of the database. Hopefully it's helpful.

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