OJDBC驅動的關於日期的坑

Oracle的JDBC驅動,針對日期型的查詢是存在坑的

查詢一個表裏面數據在某個日期範圍之內 ,通常寫法如下:

stmt = connection.prepareStatement(
"select a.fwautodownlogid from sysfwautodownlog a where a.downtime > ? and a.downtime < ?");
stmt.setDate(1, new java.sql.Date(date1.getTime()));
stmt.setDate(2, new java.sql.Date(date2.getTime()));

1、在ojdbc6 + jdk1.6的版本,java.sql.date會把傳入的java.util.date中的時分秒去掉,只是按照年月日查詢

2、在ojdbc8 +jdk1.8的版本,會按照傳入的年月日+時分秒查詢


解決方法,爲了兼容已經存在的業務程序,需要將傳入的時分秒手工清空

但這樣也會爲新開發的程序造成障礙!因爲和標準的API處理的結果不同了

解決辦法就是新開放的,別用以前封裝的API,而採用新的。。。

以後咱們能做基礎軟件了,咱們也玩玩老外,給他們整點坑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章