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,而採用新的。。。
以後咱們能做基礎軟件了,咱們也玩玩老外,給他們整點坑