oracle时间戳设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle时间戳设置相关的知识,希望对你有一定的参考价值。
设置了时间戳,为什么不是24小时机制的,是12小时机制的,如何修改成24小时机制的呢?
这个和数据库安装的时候选择的时区有关,一般国内安装都是选择北京时区。
查看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?百度一下基里巴斯。这是一个神奇的网站国度。
来自:求助得到的回答 参考技术A 回乡偶书(贺知章)追问????
将时间戳插入 Oracle 数据库中的 Varchar2 列
【中文标题】将时间戳插入 Oracle 数据库中的 Varchar2 列【英文标题】:Insert Timestamp into Varchar2 column in Oracle Database 【发布时间】:2014-06-16 20:19:02 【问题描述】:我正在使用与 Oracle 11g 数据库接口的应用程序。我需要将 YYYYMMDDhhmmss 格式的时间戳插入 Varchar2 列中。
我的 SQL 更新查询是:
更新 CODELIST_XREF_ITEM 设置 RECEIVER_ITEM=TIMESTAMP 其中 LIST_NAME='BUSINESS_PROCESS';
TIMESTAMP 变量是需要插入的位置。我尝试将 TIMESTAMP 变量设置为 CURRENT_TIMESTAMP,但我无法对其进行格式化。
有什么建议吗?
提前感谢您的帮助!
【问题讨论】:
有一段时间没有使用 oracle,但尝试 'update CODELIST_XREF_ITEM set RECEIVER_ITEM=to_char(CURRENT_TIMESTAMP,'YYYYMMDD HH24MISSFF') where LIST_NAME='BUSINESS_PROCESS';' 【参考方案1】:如果您想插入时间戳的字符表示(实际上您似乎需要 Oracle date
的字符表示,因为您不需要小数秒或时区),您可以使用 @ 987654322@函数。
to_char( sysdate, 'YYYYMMDDHH24MISS' )
所以你的UPDATE
声明将是
update CODELIST_XREF_ITEM
set RECEIVER_ITEM=to_char( sysdate, 'YYYYMMDDHH24MISS' )
where LIST_NAME='BUSINESS_PROCESS';
如果您想要存储小数秒或时区或执行其他需要 timestamp
的操作,您可以使用相同的 to_char
函数,但格式掩码不同。
【讨论】:
非常感谢!你回答了我的问题。 确保将此答案标记为已批准,以便贾斯汀获得信任。谢谢。以上是关于oracle时间戳设置的主要内容,如果未能解决你的问题,请参考以下文章