这个和数据库安装的时候选择的时区有关,一般国内安装都是选择北京时区。
查看timestampselect 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. add_months(日期,number) 指定日期推迟number个月;
2. last_day(日期) 指定日期当月的最后一天;
3. new_time(日期,时区简写) 调整时区;
4. next_day(日期,number) number表示周几,星期日是1,指定number的日期(一周内或一周后);
5. months_between(日期1,日期2) 日期1和日期2之间有几个月;
6. sysdate 系统当期那日期和时间;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)