3

我在 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 ?或者有什么更好的方法?

4

1 回答 1

2

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

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

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

于 2013-01-23T10:29:19.513 回答