我正在尝试从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
答案 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.");
}