15

我需要将查询中的 DATE 值转换为 TIMESTAMP WITH TIME ZONE,但目前我得到的 TimeZone Region ('Europe / Paris') 不能被 EF 使用。

例如,当这样做时:

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

知道如何做到这一点吗?

4

3 回答 3

27

您可以将转换DATE为 a 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
于 2014-03-07T08:47:26.137 回答
8

使用@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

问候!

于 2014-03-07T09:14:49.947 回答
-2

使用 ALTER SESSION SET TIME_ZONE = '+01:00'; 在您的 SELECT 之前

于 2015-10-27T18:11:21.583 回答