3

MySQL に DateTime データ型 (例: 2013-01-17 21:16:06) のレコードを含むテーブルがありますが、エンティティでは日付フィールドに LocalDateTime データ型を選択します。クエリ中に、2 つの日付のみ (datepicker を使用して fromDate と toDate) に基づいてすべてのレコードを取得したいと考えています。fromDate と toDate の両方に同じ日付を選択するとします。問題は、時刻が 00:00:00 であるため両方の値が同じであるため、データベースから結果が得られないことです。

Joda の正しいデータ型を使用したかどうか知りたいです。fromDate の場合は 00:00:00 、 toDate の場合は 23:59:59 など、両方の値の時間を調整する必要がありますか? または、より良いアプローチは何ですか?

4

1 に答える 1

2

datetime 列と 2 つの任意の日付を入力として指定すると、次のように記述できます。

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

どこ:

  • startDate は開始日です。
  • endDate は終了日です。

上記が何を意味するかは、次のケースを通じて最もよく説明されます。

  1. 2013-01-17(1 日)のすべてのレコードを表示するには、 startDate2013-01-17と endDate を次のようにする必要があります。2013-01-17
  2. 2013-01-17- 2013-01-18(2 日間)のすべてのレコードを表示するには、 startDate を2013-01-17、endDate を にする必要があります2013-01-18

これにより、日付を直感的に選択できます。符号により、<計算された終了日が結果から除外されます (たとえば、最初のケースでは、クエリは `2013-01-18 00:00:00 レコードを省略します)。

于 2013-01-23T10:29:19.513 に答える