Comment obtenir une valeur UTC pour SYSDATE sur Oracle
Question
Probablement un classique ... Sauriez-vous un truc facile à récupérer une valeur UTC de SYSDATE sur Oracle (mieux serait d'obtenir quelque chose à travailler sur la version 8 ainsi).
Pour l'instant j'ai fonction personnalisée: (
Cheers,
Stefan
La solution
Vous pouvez utiliser
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL;
Vous devrez peut-être changer votre fuseau horaire
ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';
Ou lire
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual;
Autres conseils
select sys_extract_utc(systimestamp) from dual;
Ne fonctionne pas sur Oracle 8, cependant.
En général, je travaille avec des colonnes DATE, TIMESTAMP pas plus, mais plus précis.
Le tableau suivant retourne la date UTC comme juste que -. Une date
CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)
Travailler avec des dates UTC est grand parce que je n'ai pas à vous soucier de la complexité des fuseaux horaires. Seul l'affichage final à l'utilisateur a besoin de compensations ou d'autres problèmes.
Si vous voulez un horodatage au lieu d'une date avec sysdate, vous pouvez spécifier un fuseau horaire à l'aide SYSTIMESTAMP:
select systimestamp at time zone 'UTC' from dual
sorties: 29-AUG-17 06.51.14.781998000 PM UTC
J'utilise:
SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;
Il fonctionne très bien pour moi.