Java 处理日期时得到错误的结果

Java 处理日期时得到错误的结果,java,sql,date,Java,Sql,Date,当我们将日期从2013年12月1日定为2014年1月31日时,它只会返回截至2013年12月31日的记录 另一个问题是,当我们获取2014年1月1日至2014年12月31日的日期时,它也会将2013年所有日期的记录返回给我 请帮我解决这个问题 多谢各位 “我的日期”列的数据类型为文本 请提供正确的查询以查找两个字符串输入日期之间的日期记录。您的日期列是日期时间而不是日期 要比较这些值,将范围中的日期转换为datetime,即日期的stsrt处的零百小时。这就是为什么你看不到最后一天的争吵 若要修

当我们将日期从2013年12月1日定为2014年1月31日时,它只会返回截至2013年12月31日的记录

另一个问题是,当我们获取2014年1月1日至2014年12月31日的日期时,它也会将2013年所有日期的记录返回给我

请帮我解决这个问题

多谢各位

“我的日期”列的数据类型为文本


请提供正确的查询以查找两个字符串输入日期之间的日期记录。

您的日期列是日期时间而不是日期

要比较这些值,将范围中的日期转换为datetime,即日期的stsrt处的零百小时。这就是为什么你看不到最后一天的争吵


若要修复,请在结束日期前添加一天,并测试小于而不是中间值,其中包括范围的结束-即小于或等于。开始时使用大于或等于。

使用Ms Access数据库时,日期列的数据类型为文本。查看代码,您希望搜索两个日期之间的记录。这样做:

  • 打开数据库
  • 在设计视图中打开表
  • 将日期列的数据类型更改为日期/时间
CDate()函数将返回日期为2013年1月5日

如果将数据类型更改为日期/时间,则必须使用将日期存储到数据库中,如下所示:

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();
现在您可以将此日期存储到数据库中


现在您的查询可以正常工作。

my Date列将文本作为数据类型,那么什么是
CDate
函数?@Bohemian(a)您第一行的意思是“Date”而不是“dare”?(b) 与其减去1秒,不如测试“小于”新一天的时刻。根据数据库的不同,日期时间的存储时间可能只有几分之一秒,因此可能存在介于“23:59:59”和“00:00:00”之间的值。什么是
CDate
函数?你们的餐桌声明是什么?让我们看看一些示例数据。CDate将字符串日期转换为日期格式,让我们看看它的主体,您的数据库是什么?我使用的是MS AccessDB@MessyProgrammer你的问题需要改进。您是否使用JDBC驱动程序连接到MS Access?谁的司机?您能否提供一个链接,以访问用于存储日期值的数据类型的文档?对于Cdate函数。如果以文本类型存储值,为什么要调用CDATE来创建日期值?@Jugadu-I已将日期列的数据类型更改为日期/时间,效果良好。非常感谢。
SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy");
String date=format.format(yourDate);