解决Oracle时间大于问题的方法(oracle时间大于)

随着办公室用的越来越多的软件,也就带来了更多的问题,如Oracle 的时间大于问题—— 当一个字段值为 00:00:00 时,它的值却大于另一个字段的值 00:00:00,让一些应用程序在操作数据库时失败。

在 Oracle 中,这个问题由于 Oracle 中时间的存储方式而产生,Oracle 会把 00:00:00 的值存储为特殊值 “01-JAN-1900 00:00:00 ” 。所以从 Oracle 映射到 .net 程序中的该值就为“ 01-JAN-1900 00:00:00” 而不是 00:00:00 。这样,由于.NET中 00:00:00 小于任何时间值,但 在 Oracle 中, 01-JAN-1900 00:00:00 是有效时间值,大于任何时间值, 就出现了以上这个问题。

解决 Oracle 时间大于问题的方法有以下几种:

(1)将.NET应用代码中的时间值映射到Oracle的时间处理值之前,先判断该值是否为 00:00:00,若为 00:00:00 则映射为 null 值,而不映射到Oracle;

(2)另一个方法是使用以下 Oracle 特殊函数:

“` sql

SELECT CASE WHEN to_date(C.EndTime,’HH24:mi:ss’)= to_date(’00:00:00′,’HH24:mi:ss’)

THEN NULL

ELSE to_date(C.EndTime,’HH24:mi:ss’)

END FROM Table C

“`

上面的函数将检查字段 C.EndTime 是否为 00:00:00 时,若为 00:00:00 则转换为 Null 值,若不为 00:00:00 则转为正常的时间值。

上面所提出的方案实用性大,可以针对不同的应用程序,采用不同的解决方案,在应用程序执行的时候,能够有效地解决 Oracle 的时间大小问题,从而让应用程序正常运行。


数据运维技术 » 解决Oracle时间大于问题的方法(oracle时间大于)