在SQL中的文本中插入带时区的时间戳

时间:2017-12-01 11:29:34

标签: sql oracle

我创建了一个insert语句,将当前时间插入到数据类型为

的字段中
  

TIMESTAMP(6)WITH TIME ZONE

insert into(
...
)
values(
9645
,0
,CAST(CURRENT_TIMESTAMP AS TIMESTAMP WITH TIME ZONE)
,user
,CAST(CURRENT_TIMESTAMP AS TIMESTAMP WITH TIME ZONE)
,0
,'APPROVED_P'
,1
,1
)

这很好用,但是有一个问题

enter image description here

我想在文本中也有时区,但我无法找到解决方案。希望有人可以帮助我。

1 个答案:

答案 0 :(得分:5)

时区+01:00CET不同。市长差异CET考虑夏令时,而+01:00则不会。

如果您需要时区CET,则必须使用ALTER SESSION SET TIME_ZONE = 'CET';相应地设置会话时区,或者设置CURRENT_TIMESTAMP AT TIME ZONE 'CET'而不是CURRENT_TIMESTAMP

运行时应该看到区别:

SELECT SESSIONTIMEZONE, 
    TO_CHAR(CURRENT_TIMESTAMP, 'yyyy-mm-dd hh24:mi:ss tzh:tzm tzr tzd'),
    TO_CHAR((current_TIMESTAMP - INTERVAL '6' MONTH), 'yyyy-mm-dd hh24:mi:ss tzh:tzm tzr tzd')
FROM DUAL;