oracle时间戳设置

设置了时间戳,为什么不是24小时机制的,是12小时机制的,如何修改成24小时机制的呢?

这个和数据库安装的时候选择的时区有关,一般国内安装都是选择北京时区。

查看timestamp
select current_timestamp,systimestamp from dual;
current_timestamp                         systimestamp
12-12月-18 04.24.02.427990 下午 +08:00    12-12月-18 04.24.02.427980 下午 +08:00

查看时区
select dbtimezone,sessiontimezone from dual; 
dbtimezone    sessiontimezone
+00:00        +08:00

对于显示是12小时制这个问题,和客户端的操作系统有关,与实际存储的数据无关。

如果想显示成24小时制,修改客户端操作系统的环境变量可以达到目的:

NLS_TIMESTAMP_FORMAT
YYYY-MM-DD HH24:MI:SS:FF6

按照上图设置后,重启plsql,查询后我们能看到时间显示成“2018-12-12 16:16:35:877000”这样的格式了。 

但是,如果建库时,时间设置错误或者是将来要改变时区时,表中的值会不会变化呢?因此引用官方的回答:

对于time zone数据类型的数据,即使你更新了数据库时区,原数据也不会进行对应调整,只能你导出数据,然后调整数据库时区,再把原始数据导入即可。所以,一般情况下,一定不要调整数据库时区。官方建议数据库时间采用UTC,因为这种时区性能好。如果没有显式指定数据库时区,数据库会使用操作系统的时区,但是如果操作系统时区不是一个合理的数据库时区,数据库则会使用默认的时区UTC,且UTC的取值范围为-12:00 to +14:00。等等,为什么会有+14?百度一下基里巴斯。这是一个神奇的网站国度。

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-29
回乡偶书(贺知章)追问

????