2013-12-16 74 views
-2

這裏我將獲取僅基於日期的數據,但是我的數據可控性日期和時間在這裏我使用查詢來選擇基於日期的數據,但我沒有得到它可以任何plz exp線,謝謝。如何在java中編寫類似查詢的日期

String device = "NR09G05635"; 
String date = "2013-11-29"; 
java.util.Date temp = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(date); 
java.sql.Date date1 = new java.sql.Date(temp.getTime()); 
sql = "select * from gpsdata1 where deviceId=? and dateTime like '" + date1 + "'"; 
System.out.println("sql" + sql); 
ps1 = con.prepareStatement(sql); 
ps1.setMaxRows(1); 
ps1.setString(1, device); 
ps1.execute(); 
rs = ps1.getResultSet(); 
+0

是什麼happening..what是I/P ..什麼預期O/P ??。什麼是你得到的o/p?..「沒有得到它」 - 一個非常普遍的術語兄弟。 – TheLostMind

+0

如果你想傳遞日期對象,你必須使用語句或準備好的語句。否則,在你的情況下,你可以傳遞字符串本身,而不是「date1」,你可以傳遞「date」。 –

+0

爲什麼在查詢中結合PreparedStatement格式和Statement格式? –

回答

0

- 您使用LIKE運算符將字符,字符串或CLOB值與模式進行比較。案例很重要。 LIKE返回如果模式相匹配的布爾值TRUE或FALSE,如果它們不匹配

  • 使用TO_CHAR顯式地創建基於日期的字符串,用你想要的格式。不要依賴隱式轉換。

選擇* 從gpsdata1 凡NVL(TO_CHAR(日期時間 , 'YYYY-MM-DD HH:MI:SS AM' ) '' - 一個空間 )LIKE '%';

+0

一個非常糟糕的解決方案,因爲使用「LIKE」運算符可能會導致對查詢進行全表掃描。計算所需日期的時間間隔是更好的方法,然後根據以下條件進行選擇:'...(dateTime> = t0)AND(dateTime

0
SELECT * FROM gpsdata1 
WHERE deviceId=? and CONVERT(VARCHAR(25), dateTime, 126) LIKE '2013-11-19%' 

LIKE操作者不反對DATETIME變量的工作,但你可以施放DATETIMEVARCHAR

相關問題