ORACLE中的TIMESTAMP数据类型可能大家用的都比较少,所以即使最简单的一个查询返回的结果也会搞不清楚到底这个时间是什么时间点。
比如:
27-1月 -08 12.04.35.877000 上午
这个时间到底是几点呢?中午12:04分,那就错了,其实使用to_char函数转换后得到如下结果:
2008-01-27 00:04:35:877000
说明这个时间是凌晨的00:04分,而不是中午的12:04分。
发生这个问题的原因如下:
首先来看一个实验:
SELECT TO_CHAR(TO_DATE('2008-01-29 00:05:10', 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh:mi:ss am') FROM DUAL
首先把一个00:05分的时间进行转换,按照'yyyy-mm-dd hh:mi:ss am'格式进行转换,得到的结果是:
2008-01-29 12:05:10 上午
这说明oracle在进行日期转换成字符串的过程中,如果小时转换使用的是12进制的格式,则凌晨00点会被认为是上午12点,然后才是上午1点、2点、3点。。。
oracle中12进制的计时不是从0-11,而是从1-12的,所以如果是夜里零点,你不能记成1点,那只能记成12点了。(不知道这是不是跟洋人的习惯有关?)
那么我们来看下ORACLE中对TIMESTAMP的处理:
SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_TIMESTAMP_FORMAT'
返回结果DD-MON-RR HH.MI.SSXFF AM,可以看到,这里默认情况下,使用的TIMESTAMP的格式是12进制的小时。
问题到这里已经找到根源了。
解决:
pl/sql
developer中读取的是注册表中设置的NLS_TIMESTAMP_FORMAT
格式,那么只要在注册表中设置oracle环境变量的地方(也就是
设置ORACLE_HOME的地方HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
)设置NLS_TIMESTAMP_FORMAT的格式(也就是创建这样一个字符串项,然后设置它的值为你转换需要的掩
码,我一般设置为YYYY-MM-DD HH24:MI:SS:FF6
),然后关掉PL/SQL
DEVELOPER,再登陆进来,以后看到的TIMESTAMP时间就会自动转换成你需要的格式了。
分享到:
相关推荐
使用PL/SQL格式化工具如SQL Developer或Toad进行代码美化。 10. **代码复用**:利用PL/SQL的集合类型和游标,减少代码重复。使用`PIPELINED`函数返回结果集,提高数据处理效率。 11. **并发控制**:理解并合理应用...
1. **通过Oracle客户端工具**: 如SQL*Plus、SQL Developer等,可以直接在这些工具中编写和执行PL/SQL代码。 2. **通过应用程序**: 例如Web应用程序或者桌面应用程序,这些程序可以通过调用存储在数据库中的PL/SQL...
重启后,再次打开PL/SQL Developer,此时,你应该会发现日期和时间的显示格式已经按照你设定的`YYYY-MM-DD HH24:MI:SS`格式进行了调整。 通过这种方式,我们不仅优化了在PL/SQL Developer中的日期和时间处理,也...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
PL/SQL的运行环境包括SQL*Plus、TOAD和PL/SQL Developer等工具,这些工具为开发和调试PL/SQL提供了方便。 在PL/SQL中,`%TYPE`和`%ROWTYPE`是两个重要的特性。`%TYPE`用于声明变量与已存在表列的数据类型相同,如`v...
除了在数据库中运行外,PL/SQL也可以在多种Oracle工具中使用,比如Oracle SQL Developer、Oracle GoldenGate等,这些工具提供了丰富的界面和功能支持PL/SQL开发。 ##### 三、PL/SQL的优势 **1、SQL的支持** PL/SQL...
开发和执行PL/SQL程序可以使用多种工具,如SQL*Plus、TOAD和PL/SQL Developer等。 7. **PL/SQL数据类型** PL/SQL提供了丰富的数据类型,包括数值类型(如`integer`、`number`),日期时间类型(如`timestamp`、`...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
2. **Oracle 工具中**:除了在数据库内执行外,PL/SQL 还可以在多种 Oracle 开发工具中编写和测试,例如 SQL*Plus、PL/SQL Developer 等。 **三、PL/SQL 的优势** 1. **SQL 的支持**:PL/SQL 紧密集成了 SQL 语言...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
On the "View" ribbon you can now choose between a Single Document Interface (SDI) or Multiple Document Interface (MDI - the same as in PL/SQL Developer 11.0 and earlier). In SDI mode you always see ...
13. 存储过程和函数:在PL/SQL中,可以创建存储过程和函数,将一系列SQL和PL/SQL语句打包成可重用的单元,提高代码复用性和性能。 14. 触发器:触发器是一种数据库对象,当特定的DML操作(INSERT、UPDATE、DELETE)...
在实际开发中,我们可能会使用PL/SQL(Oracle的存储过程语言)编写更复杂的逻辑,或者借助Oracle SQL Developer这样的工具来编写和测试SQL语句。源码可能涉及自定义函数或存储过程,用于处理特定的时间分割和插入...
为减小软件体积,没有对PL/SQL Developer打包,请用户自行下载。 ------------------------------------ >移除了OLE DB/ODBC相关的几个文件, 相应的注册表也一并移除 >加入OCCI相关的DLL文件,以支持occi程序的...
为减小软件体积,没有对PL/SQL Developer打包,请用户自行下载。 ------------------------------------ >移除了OLE DB/ODBC相关的几个文件, 相应的注册表也一并移除 >加入OCCI相关的DLL文件,以支持occi程序的...
其他常用的开发工具有SQL Developer、PL/SQL Developer和TOAD。在SQL*Plus中,`quit`用于退出,`clear screen`清空屏幕,`spool`命令可以将SQL输出保存为脚本文件,`edit`允许编辑最后输入的命令,`set time on/off`...