2017-07-28 111 views
0

showing the initial timestamp format轉換預配置時間戳使用SQL查詢北京時間

目前我工作的元數據庫。我有我的時間戳這樣的'星期五,2017年6月23日上午8點43分'。我需要將此時間戳從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 
+0

什麼是您的實際*問題*? – joanolo

+0

我必須使用mysql查詢 – Addictd

回答

0

在PostgreSQL 並假定簡化方案集中於轉換您時間戳來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 ; 
 
id | your_timestamp   | timestamp_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 here


個參考文獻:


我不知道MySQL的當量。我希望你實際上使用的是PostgreSQL,因爲你的標識符是"double quoted"而不是MySQL中的`backtick quoted`

+0

將此格式轉換爲ist(目前它顯示根據utc)您沒有理解我的問題。我說查詢已經在所示的格式(見鏈接imaeg)。我想以某種方式使用現有的查詢來改變時間到IST。感謝努力雖然 – Addictd

+0

您原來的查詢*做它做*。如果你想從一個時區轉換到另一個時區,你需要做另外一件事:使用AT TIME ZONE'IST''。 – joanolo