Sql 我想在将其插入表格时调整夏/冬时区的日期
我在表_a中有一个日期和时间变量,以GMT为单位。我想在表_B中插入此日期和时间,但我想根据时区和夏季/冬季时间调整插入的值。 即: 我能做这个吗?那样的话,我该怎么写Sql 我想在将其插入表格时调整夏/冬时区的日期,sql,oracle,utc,Sql,Oracle,Utc,我在表_a中有一个日期和时间变量,以GMT为单位。我想在表_B中插入此日期和时间,但我想根据时区和夏季/冬季时间调整插入的值。 即: 我能做这个吗?那样的话,我该怎么写 谢谢。我想您可以简单地转换GMT/UTC时间。但是,您必须使用时区的全称 SELECT TIMESTAMP '2014-06-10 12:00:00 +00:00' AT TIME ZONE 'Europe/Zurich' AS summer FROM dual; SUMMER
谢谢。我想您可以简单地转换GMT/UTC时间。但是,您必须使用时区的全称
SELECT TIMESTAMP '2014-06-10 12:00:00 +00:00' AT TIME ZONE 'Europe/Zurich' AS summer FROM dual;
SUMMER
---------------------------------------
10.06.2014 14:00:00.000000000 +02:00
SELECT TIMESTAMP '2014-12-10 12:00:00 +00:00' AT TIME ZONE 'Europe/Zurich' AS winter FROM dual;
WINTER
---------------------------------------
10.12.2014 13:00:00.000000000 +01:00
由于源值是数据类型DATE,因此必须执行以下步骤
将日期转换为时间戳
使用FROM_TZ设置值的时区
使用AT时区“…”将值转换为新时区
迄今为止的价值
写在一个单一的声明,它是
select
CAST(FROM_TZ(CAST(sy_sttime AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Zurich' AS DATE)
from sy_request
还是不太清楚
select
CAST((CAST(sy_sttime AS TIMESTAMP) AT TIME ZONE 'UTC') AT TIME ZONE 'Europe/Zurich' AS DATE)
from sy_request
谢谢您的快速回复!但是,我得到了一个错误:ORA-30084:带有时区修饰符的datetime主数据类型无效。你知道我该怎么防止吗?GMT\u DATE\u和\u TIME列的数据类型是什么?是约会吗?在这种情况下,首先必须对“时区时间戳”进行转换。老实说,我不确定GMT_DATE_和_TIME是什么数据类型,但转换成功了。选择cast sy_sttime作为时区为“欧洲/苏黎世”的时间戳,sy_sttime from sy_request创建以下记录:CAST 2014-11-10 20:01:08.000000+01:00 sy_sttime 11/10/2014 8:01:08 PM我可以获取CAST值以直接转换为格式11/10/2014 9:01:08 PM并将时区添加到时间戳中吗?您可以通过命令DESC sy_request;获取列的数据类型;。您可以使用TO_CHAR函数以任何格式显示它。见文件。但不要将格式化的字符串插入日期列!那么数据类型是DATE。所以我想我要做的是将一个字段格式化为DATE,将其格式化为TIMESTAMP,添加时区,然后将其格式化为DATE?我说得对吗?例如:选择to_datecastsy_stime作为时间戳,时区为“欧洲/苏黎世”,sy_stime来自sy_请求,但实际上不起作用。我想我错过了一些东西。。。
select
CAST((CAST(sy_sttime AS TIMESTAMP) AT TIME ZONE 'UTC') AT TIME ZONE 'Europe/Zurich' AS DATE)
from sy_request