J'ai besoin de convertir une valeur DATE dans une requête en TIMESTAMP WITH TIME ZONE, mais actuellement j'obtiens la TimeZone Region ('Europe/Paris') qui n'est pas valide pour être utilisée par EF.
Par exemple, lors de cette opération:
select CAST(FECHA AS TIMESTAMP WITH TIME ZONE) from test;
J'obtiens actuellement cette sortie:
07/03/14 09:22:00,000000000 EUROPE/PARIS
Mais j'ai besoin que ce soit comme:
07/03/14 09:22:00,000000000 +01:00
Une idée de comment y parvenir?
Vous pouvez convertir le DATE
en TIMESTAMP
, puis utiliser FROM_TZ
pour convertir cet horodatage en horodatage avec fuseau horaire:
SQL> SELECT from_tz(CAST (SYSDATE AS TIMESTAMP), '+01:00') tz FROM dual;
TZ
-------------------------------------------------
07/03/14 09:47:06,000000 +01:00
Avec la solution @Vincent Malgrat, vous devez obtenir la TIMEZONE_HOUR, puis la formater pour l'utiliser dans votre requête. Je ne sais pas s'il y a une chance de le faire automatiquement.
Je peux vous suggérer d'imbriquer certaines fonctions. Ce n'est pas la solution la plus propre mais ça marche pour moi
SELECT TO_TIMESTAMP_TZ(TO_CHAR(CAST(FECHAHORA AS TIMESTAMP WITH TIME ZONE), 'DD-MM-YY HH24:MI:SS TZH:TZM'), 'DD-MM-YY HH24:MI:SS TZH:TZM' )FROM TEST;
Et le résultat sera quelque chose comme
03/03/14 09:58:02,000000000 +01:00
Cordialement!