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

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

最佳答案

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

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

哪里:
  • startDate是开始日期,包括
  • endDate是结束日期,
  • 除外

    通过以下情况可以最好地解释上述含义:
  • 要查看2013-01-17的所有记录(一天),startDate应该是2013-01-17,endDate应该是2013-01-17
  • 要查看2013-01-17-2013-01-18的所有记录(两天),startDate应该为2013-01-17,endDate应该为2013-01-18

  • 这使选择日期变得直观。 <符号可确保将计算出的结束日期从结果中排除(例如,在第一种情况下,查询会省略`2013-01-18 00:00:00记录)。

    09-27 00:51
    查看更多