Vraisemblablement, les T et Z fixes vous déroutent un peu, car ils ne sont pas normaux modèle de format date/heure éléments. Mais la documentation dit :
Vous placez donc le T et le Z entre guillemets doubles, comme "T"
et "Z"
, dans votre modèle de format.
Si vous n'êtes pas intéressé par le fuseau horaire, vous pouvez utiliser le to_timestamp()
fonction
:
to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Ou si vous voulez avoir avec le fuseau horaire, vous pouvez utiliser le to_timestamp_tz()
fonction
, qui utilisera par défaut le fuseau horaire de votre session actuelle (comme vous n'en spécifiez pas un ici, le Z n'est pas interprété comme Zulu/UTC) :
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Si vous le voulez avec un fuseau horaire et que vous voulez spécifier qu'il est UTC, vous pouvez le forcer avec le from_tz()
fonction
:
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')
Pour voir la différence que cela produit, spécifiez un fuseau horaire pour la session en tant que démo :
alter session set time_zone = 'America/New_York';
select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;
NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK
24-MAR-15 07.08.24.000000000 UTC
Je suppose que le Z est fixe et que les valeurs que vous obtenez sont donc toujours représentatives de l'UTC ; si vous obtenez réellement différents fuseaux horaires dans les valeurs que vous devez convertir, vous devrez les extraire et les appliquer - ce qui est faisable, mais difficile, et ne vaut pas la peine d'être abordé à moins que vous ne soyez réellement dans cette situation.