我创建了一个带有 created_time 列的表,该列的默认时间为 systimestamp。当我向其中插入一行时,时间显示的是我的当地时间。23-02-18 08:49:05.430419000 上午
但是当我查询 select systimstamp from dual 时,它显示 GMT 就像 23-02-18 05:11:04.225141000 AM +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');
Run Code Online (Sandbox Code Playgroud)
我希望 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)
);
Run Code Online (Sandbox Code Playgroud)
或使用 created_time TIMESTAMP(6) WITH TIME ZONE default SYSTIMESTAMP