2017-07-28 2 views
0

showing the initial timestamp formatConvertir horodatage préconfiguré en métabase du format utc à l'aide de requêtes SQL ist

Actuellement je travaille sur métabase. J'ai mon horodatage quelque chose comme ça 'Vendredi 23 juin 2017 8h43'. J'ai besoin de convertir cet horodatage de utc en forme ist.

Le code est quelque chose comme ça


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

Quelle est votre véritable * question *? – joanolo

+0

je dois convertir ce format en ist (actuellement il montre selon utc) en utilisant mysql requêtes – Addictd

Répondre

0

Dans PostgreSQL et en supposant un scénario simplifié de se concentrer sur la conversion de vos estampilles pour IST tel est celui-ci:

CREATE TABLE locations 
(
    id serial PRIMARY KEY, 
    your_timestamp timestamp with time zone 
) ; 

REMARQUE: n'utilisez pas timestamp comme nom de colonne pour éviter les confusions. timestamp est déjà un 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') ; 

Vous souhaitez convertir tous les temps (non seulement ceux qui sont déjà entrés en UTC, ou avec le fuseau horaire local du client qui se connecte à la base de données), vous utilisez:

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 

Vous pouvez vérifier à dbfiddle here


Références:


je ne sais pas l'équivalent MySQL. J'espère que vous utilisez réellement PostgreSQL, puisque vos identifiants sont "double quoted" et non `backtick quoted` comme dans MySQL.

+0

vous n'avez pas compris ma question. J'ai dit que les requêtes sont déjà faites dans le format indiqué (voir imaeg lié). Je veux en quelque sorte utiliser la requête existante pour changer le temps pour IST. thanku pour l'effort si – Addictd

+0

Votre requête d'origine * fait ce qu'elle fait *. Si vous voulez convertir d'un fuseau horaire à un autre, vous devez faire autre chose: utilisez 'AT TIME ZONE 'IST''. – joanolo