MS Access使用JDBC在两个日期之间检索数据

时间:2013-07-04 07:06:24

标签: java jdbc ms-access-2007

我想使用JDBC从MS Access检索两个日期之间的数据。

我试过了

String query= "SELECT lastlogin FROM loginHistory " +
            "WHERE lastlogin BETWEEN #01/07/2013# AND #03/07/2013#"+
            "ORDER BY lastLogin DESC";

我没有得到预期的结果。 有什么问题。请帮帮我!

谢谢。

4 个答案:

答案 0 :(得分:2)

通过将日期格式从01/07/2013转换为2013/07/01

来获得解决方案
String query= "SELECT lastlogin FROM loginHistory " +
            "WHERE lastlogin BETWEEN #2013/07/01# AND #2013/07/03#"+
            "ORDER BY lastLogin DESC";

谢谢大家的支持..

答案 1 :(得分:0)

Query最后错过了"而你在中间添加了。

尝试

String query= "SELECT lastlogin FROM loginHistory " +
            "WHERE lastlogin BETWEEN #01/07/2013# AND #03/07/2013# "+
            "ORDER BY lastLogin DESC";

答案 2 :(得分:0)

您的SQL语法是正确的,但在代码中间有一个额外的引号,直接在BETWEEN子句中的第一个日期之后。

答案 3 :(得分:0)

  

我没有得到预期的结果。

我相信你的代码会编译,但你没有得到你期望的结果集。虽然您在此处发布的代码错过了引号。我认为这是一个错字,否则代码就不会自行编译。

检查查询中的日期字符串格式是否正确。以PreparedStatement

执行查询
String query= "SELECT lastlogin FROM loginHistory " +
        "WHERE lastlogin BETWEEN ? AND ?"+
        "ORDER BY lastLogin DESC";

使用Date格式正确格式化后设置日期字符串。还要检查列的数据类型是什么,是VARCHAR/String还是DATE等等。您甚至可以在SQL查询中使用format()

Select lastlogin From loginHistory where format(lastlogin,"dd/mm/yyyy")
BETWEEN  format(#01/07/2013#,"dd/mm/yyyy") AND 
format(#03/07/2013#,"dd/mm/yyyy") ORDER BY lastLogin DESC;