比较sysdate和重新安排的当前日期

时间:2014-07-13 06:19:05

标签: java swing ms-access jdbc

我正在尝试从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();
    }
}

但它似乎没有用。另外,我遇​​到了问题,如果它为null,则会引发异常。

任何人都有更好的选择......请评论。

我的表格架构 -

Message GroupName SendDate
text    text      Date/Time

日期格式为12-Jul-14 11:00:47 AM

1 个答案:

答案 0 :(得分:0)

对于Access数据库的查询,您需要使用Now()而不是sysdate。 (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.");
}