在 PostgreSQL 1中,假设一个简化的场景专注于将时间戳转换为IST
这样的场景:
CREATE TABLE locations
(
id serial PRIMARY KEY,
your_timestamp timestamp with time zone
) ;
注意:不要timestamp
用作列名,以免混淆。timestamp
已经是一个type
。
INSERT INTO locations
(your_timestamp)
VALUES
('2017-01-01 10:00:00 UTC'),
('2017-01-01 10:00:00 Europe/Rome'),
('2017-01-01 10:00:00 America/New_York'),
('2017-01-01 10:00:00 IST') ;
您将转换所有这些时间(不仅是已经输入为 UTC 的时间,或者连接到数据库的客户端的本地时区),您将使用:
SELECT
id,
your_timestamp,
your_timestamp AT TIME ZONE 'UTC' AS timestamp_utc,
your_timestamp AT TIME ZONE 'IST' AS timestamp_ist
FROM
locations ;
编号 | 你的时间戳 | 时间戳_utc | timestamp_ist
-: | :--------------------- | :----------------- | :-----------------
1 | 2017-01-01 10:00:00+00 | 2017-01-01 10:00:00 | 2017-01-01 12:00:00
2 | 2017-01-01 09:00:00+00 | 2017-01-01 09:00:00 | 2017-01-01 11:00:00
3 | 2017-01-01 15:00:00+00 | 2017-01-01 15:00:00 | 2017-01-01 17:00:00
4 | 2017-01-01 08:00:00+00 | 2017-01-01 08:00:00 | 2017-01-01 10:00:00
您可以在此处的dbfiddle检查它
参考:
1我不知道 MySQL 的等价物。我希望您实际上使用的是 PostgreSQL,因为您的标识符"double quoted"
与`backtick quoted`
MySQL 不同。