String date1 = jTextField.getText();
String date2 = jTextField2.getText();
// using CDate...
pre=conn.prepareStatement("select * from Table where Date "
+ "between CDate(?) and CDate(?) order by Date");
pre.setString(1, date1); // bind param 1
pre.setString(2, date2); // bind param 2
ResultSet rs=pre.executeQuery();
当我们从2013年12月1日到2014年1月31日的日期时,我只会将截至2013年12月31日的记录退回。
另一个问题是,当我们从2014年1月1日到2014年12月31日截止日期时,它会返回2013年所有日期的记录。
请帮我解决这个问题。
谢谢。
我的日期列的数据类型为文本。
请提供正确的查询以查找两个字符串输入日期之间的日期记录。
答案 0 :(得分:0)
您的日期列是日期时间而不是日期。
要比较这些值,范围内的日期将转换为日期时间,即日期的 stsrt 为零时。这就是为什么你没有看到最后一天的行。
要修复,请在结束日期添加一天并测试小于而不是 beteen 包含范围的结尾 - 即小于或等于。使用大于或等于作为开始。
答案 1 :(得分:0)
当您使用Ms Access数据库时,您的Date列的数据类型为Text。查看您的代码,您希望在两个日期之间搜索记录。所以这样做:
CDate()函数将返回日期为05/01/2013。
如果您将数据类型更改为日期/时间,则必须使用SimpleDateFormat将日期存储到数据库中:
SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy");
String date=format.format(yourDate);
现在您可以将此日期存储到数据库中。
现在您的查询工作正常。