timestamp、to_char在oracle使用过程中注意的问题
2014-12-23 10:02
323 查看
今天在使用iBATIS的xml文件写sql后运行,发现查询出来的日期总是中午12点,当时查找了好久也没有找到原因。后开开始比对SQL发现日期先进行to_char然后subString然后timestamp标签转换日期时,日期结果出现问题了,因此格式很重要: 例子如下:
select to_timestamp(substr(to_char(sysdate, 'yyyy-mm-dd
hh24:mi:ss'), 0,
13),'yyyy-mm-dd hh24') as operationTime
from dual;
结果:23-12月-14 12.00.00.000000000 上午
select to_timestamp(substr(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 0, 13),
'yyyy-mm-dd hh24') as operationTime
from dual;
结果: 23-12月-14 09.00.00.000000000 上午
从这里可以看出一样的SQL语句结果为什么不一样呢?问题就出来了红色位置,这yyyy-mm-dd和hh24:mi:ss之间只能有一个空格,
因为我截取字符串时只截取了13位,如果空格多了 那么小时就无法获取到,因此日期默认为12点了。
这个问题一般在eclipse中xml文件进行format格式化过程中容易出现,因此记录下来,这次血的教训,希望能够给大家提供帮助。
谨记:eclipse,shift+ctrl+f格式化时,日期格式的处理。
select to_timestamp(substr(to_char(sysdate, 'yyyy-mm-dd
hh24:mi:ss'), 0,
13),'yyyy-mm-dd hh24') as operationTime
from dual;
结果:23-12月-14 12.00.00.000000000 上午
select to_timestamp(substr(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 0, 13),
'yyyy-mm-dd hh24') as operationTime
from dual;
结果: 23-12月-14 09.00.00.000000000 上午
从这里可以看出一样的SQL语句结果为什么不一样呢?问题就出来了红色位置,这yyyy-mm-dd和hh24:mi:ss之间只能有一个空格,
因为我截取字符串时只截取了13位,如果空格多了 那么小时就无法获取到,因此日期默认为12点了。
这个问题一般在eclipse中xml文件进行format格式化过程中容易出现,因此记录下来,这次血的教训,希望能够给大家提供帮助。
谨记:eclipse,shift+ctrl+f格式化时,日期格式的处理。
相关文章推荐
- oracle sql to_char使用注意
- oracle使用to_char和next_day函数得到本周的第一天和最后一天日期
- web程序使用Oracle需要注意的问题.
- Linq to Oracle 存储过程使用(使用 MS ADO.NET Provider)
- oracle使用to_char和next_day函数得到本周的第一天和最后一天日期
- oracle ora-02020 存储过程中dblink使用个数问题
- 使用Oracle to_date()与to_char()用法
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- oracle存储过程中异常处理应注意的问题
- 使用Oracle SQL trace时需要注意的问题
- 使用sphinx搜索子域名过程中需注意的问题
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- 存储过程里使用select要注意的一个问题!
- 注意使用PowerDesigner 生成 Oracle表时候带来的问题
- 【转】使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
- [转]AppFuse中使用Oracle需要注意的问题
- 使用存储过程中应该注意的问题(原创)
- Linq to Oracle 使用教程(七)将数据库的存储过程映射到方法
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题