查询LocalDateTime

时间:2013-01-23 08:06:28

标签: java mysql hibernate datetime jodatime

我有一个包含MySQL中DateTime数据类型记录的表(例如2013-01-17 21:16:06), 在我的实体上,我为日期字段选择了LocalDateTime数据类型。在我的查询期间,我想仅基于2个日期检索所有记录(fromDate和toDate使用datepicker)。假设我为fromDate和toDate选择了相同的日期,问题是由于时间是00:00:00,值都是相同的,因此数据库没有结果。

如果我使用了Joda的正确数据类型,我很好奇。我是否需要调整两个值的时间,比如说00:00:00为fromDate,23:59:59为toDate?或者什么是更好的方法?

1 个答案:

答案 0 :(得分:2)

给定datetime列和两个任意日期作为输入,您可以写:

SELECT * FROM `table`
WHERE `datetime` >= @startDate
AND   `dateTime` <  @endDate + INTERVAL 1 DAY

其中:

  • startDate是开始日期,包括
  • endDate是结束日期,独占

通过以下情况可以最好地解释上述方法:

  1. 要查看2013-01-17(一天)的所有记录,startDate应为2013-01-17,endDate应为2013-01-17
  2. 要查看2013-01-17 - 2013-01-18(两天)的所有记录,startDate应为2013-01-17,endDate应为2013-01-18
  3. 这使得选择日期变得直观。 <符号可确保从结果中排除计算的结束日期(例如,在第一种情况下,查询省略了`2013-01-18 00:00:00记录)。