2014-07-13 165 views
1

我想從MS Access中的數據庫中提取日期。我想比較這個日期,直到它的sysdate接近它。我寫了這樣的東西 -比較系統日期和重新安排的當前日期

while(true) 
{ 
    try 
    { 
     PreparedStatement p =c.prepareStatement("select Message,SendDate from mesaages12 where SendDate between sysdate - 0.25 and sysdate + 0.25"); 
     r1 = p.executeQuery(); 
     // another class object called 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

但它似乎並沒有工作。另外我有問題,如果它是空的,它會引發異常。

任何人都有更好的選擇...請評論。

我的表的模式 -

Message GroupName SendDate 
text text  Date/Time 

日期爲格式的12月14上午11時00分47秒

回答

0

爲了針對你需要使用Now()代替sysdate Access數據庫查詢。 (sysdate是Oracle功能。)

所以查詢將是

SELECT Message, SendDate FROM mesaages12 
WHERE SendDate BETWEEN Now() - 0.25 AND Now() + 0.25 

和其中[SendDate]爲中心的當前本地系統時間在12小時範圍內,將返回行。

要處理的情況下沒有匹配的行,你可以做這樣的事情

p = c.prepareStatement("SELECT Message, SendDate FROM mesaages12 WHERE SendDate BETWEEN Now() - 0.25 AND Now() + 0.25"); 
ResultSet r1 = p.executeQuery(); 
if (r1.next()) { 
    while (true) { 
     // do something with the current row of the ResultSet 
     // for demonstration purposes, we'll just print the [Message] text 
     System.out.println(r1.getString(1)); 
     if (!r1.next()) break; 
    } 
} 
else { 
    // code to handle the case where no rows are returned 
    System.out.println("The query did not return any rows."); 
} 
+0

Thnks! ,現在()工作 – Prakhar

+0

@uchiha不客氣。請記住[接受](http://meta.stackexchange.com/a/5235/238021)您發現有用的答案。 –