0

显示初始时间戳格式

目前我正在研究元数据库。我的时间戳类似于“2017 年 6 月 23 日星期五 8:43 AM”。我需要将此时间戳从 utc 转换为 ist 形式。

代码是这样的


SELECT CAST("public"."locations"."timestamp" AS date) AS "timestamp"
FROM "public"."locations"
GROUP BY CAST("public"."locations"."timestamp" AS date)
ORDER BY CAST("public"."locations"."timestamp" AS date) ASC
4

1 回答 1

0

在 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 不同。

于 2017-07-28T19:07:07.493 回答