我需要在查询中将DATE值转换为TIMESTAMP WITH TIME ZONE,但是目前我正在获取无效的EF使用的TimeZone区域('Europe / Paris')。
例如,在执行此操作时:
select CAST(FECHA AS TIMESTAMP WITH TIME ZONE) from test;
我目前得到这个输出:
07/03/14 09:22:00,000000000 EUROPE/PARIS
但我需要它像:
07/03/14 09:22:00,000000000 +01:00
知道怎么做到这一点吗?
答案 0 :(得分:16)
您可以将DATE
转换为TIMESTAMP
,然后使用FROM_TZ
将此时间戳转换为带时区的时间戳:
SQL> SELECT from_tz(CAST (SYSDATE AS TIMESTAMP), '+01:00') tz FROM dual;
TZ
-------------------------------------------------
07/03/14 09:47:06,000000 +01:00
答案 1 :(得分:6)
使用@Vincent Malgrat解决方案,您需要获取TIMEZONE_HOUR,然后格式化以在查询中使用。我不知道是否有机会自动制作它。
我建议你嵌套一些功能。它不是最干净的解决方案,但它对我有用
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;
结果将类似于
03/03/14 09:58:02,000000000 +01:00
问候!
答案 2 :(得分:-2)
使用 ALTER SESSION SET TIME_ZONE =' +01:00&#39 ;; 在您的SELECT之前