如何根据grails中的日期获取记录

时间:2014-12-06 10:14:52

标签: java hibernate grails

enter image description here

我正面临一些与日期有关的小问题。实际上我使用的是grails 2.3.7并尝试根据日期范围查找记录。假设我想获得日期为26-11-2014的所有记录。

所以我最终使用这种方法。

  String fromDate="2014-12-03";
  String toDate="2014-12-04";

  SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd")

  Date d1 = df1.parse(fromDate);
  Date d2 = df1.parse(toDate);

  Order?.executeQuery("select orderDate from Order where orderDate between ? and ? ",[d1,d2]);

结果是

  [2014-12-03 10:27:23.0, 2014-12-03 10:30:53.0, 2014-12-03 10:32:30.0]

实际上是2014年12月3日的4条记录,但我们只得到了3条。

同样适用于2014-11-27至2014-11-28

结果是

  [2014-11-27 10:52:56.0, 2014-11-27 13:42:16.0, 2014-11-27 14:44:05.0, 2014-11-27 15:47:36.0,     
  2014-11-27 15:51:36.0, 2014-11-27 16:10:17.0, 2014-11-27 18:01:08.0, 2014-11-27 18:07:47.0,   
  2014-11-27 18:30:54.0, 2014-11-27 18:34:06.0, 2014-11-27 18:40:35.0]

实际上是2014年11月27日的13条记录,但我们只得到了11条。

请帮帮我。

我被困在这里。

2 个答案:

答案 0 :(得分:1)

问题在于时间的一部分日期。

您可以执行以下操作以使用orderDate = 2014-12-03:

检索所有行
String fromDate="2014-12-03 00:00:00"
String toDate="2014-12-03 23:59:59"
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
Date d1 = df1.parse(fromDate)
Date d2 = df1.parse(toDate)
Order?.executeQuery("select orderDate from Order where orderDate between ? and ? ",[d1,d2]);

您也可以使用Date.clearTime()来删除日期的时间。

答案 1 :(得分:0)

没有什么错误。我做了yyyy-MM-dd HH:MM:SS  虽然它应该是yyyy-MM-dd HH:mm:ss