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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top