我有一个表,其中包含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
哪里:
通过以下情况可以最好地解释上述含义:
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记录)。