我创建了一个带有created_time 列的表,该表的默认时间为systimestamp。
当我向其中插入一行时,时间显示的是我的当地时间。
23-02-18 08:49:05.430419000 上午
但是当我查询 select sysstimstamp from Dual 时,它显示 GMT 就像
23-02-18 05:11:04.225141000 上午 +00:00
如何确保默认时间戳也考虑 GMT?
CREATE TABLE TS_TEST (
MY_NAME VARCHAR2(100),
created_time TIMESTAMP(6) default CURRENT_TIMESTAMP
);
insert into TS_TEST (MY_NAME) Values ('george');
我希望created_time列应始终采用GMT
检查你的代码,然后你应该看到问题所在。你说 ”默认时间为 systimestamp“但是你的代码是default CURRENT_TIMESTAMP
SYSTIMESTAMP
不同于CURRENT_TIMESTAMP
SYSTIMESTAMP
返回当前日期/时间为TIMESTAMP WITH TIME ZONE
数据库服务器操作系统的时区(不是DBTIMEZONE
!).
CURRENT_TIMESTAMP
返回当前日期/时间日期为TIMESTAMP WITH TIME ZONE
当前用户会话时区(可能随时更改)。
LOCALTIMESTAMP
返回当前日期/时间日期为TIMESTAMP
(没有时区信息)当前用户会话时区。
我会推荐这个:
CREATE TABLE TS_TEST (
MY_NAME VARCHAR2(100),
created_time TIMESTAMP(6) default SYS_EXTRACT_UTC(SYSTIMESTAMP)
);
or use created_time TIMESTAMP(6) WITH TIME ZONE default SYSTIMESTAMP
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)