93

MySQL で日付範囲内のデータを選択するにはどうすればよいですか。私のdatetimeコラムは 24 時間のズールー時間形式です。

select * from hockey_stats 
where game_date between '11/3/2012 00:00:00' and '11/5/2012 23:59:00' 
order by game_date desc;

これらの期間の間にデータがあるにもかかわらず、何も返しません。「from」フィールドと「to」フィールドの値を強制的にdatetimeクエリに入力する必要がありますか?

4

8 に答える 8

160

日付形式を更新する必要があります。

select * from hockey_stats 
where game_date between '2012-03-11 00:00:00' and '2012-05-11 23:59:00' 
order by game_date desc;
于 2013-04-04T20:48:18.480 に答える
5

おそらくSTR_TO_DATE関数を使用する必要があります:

select * from hockey_stats 
where
  game_date between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
                and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s') 
order by game_date desc;

(game_date が文字列の場合、STR_TO_DATE を使用する必要がある場合があります)

于 2013-04-04T20:59:45.987 に答える
5

簡単な方法で、次のようにクエリできます

select * from hockey_stats 
where game_date between '2018-01-01' and '2018-01-31';

これは、時間が問題にならない場合に機能します。

時間を考慮すると、次のようにもなります。

select * from hockey_stats where (game_date between '2018-02-05 01:20:00' and '2018-02-05 03:50:00');

これは MySQL サーバー用であることに注意してください。

于 2018-02-01T14:41:34.217 に答える
4

MySQL の日付形式は次のとおりです: YMD. Y/M/D を使用しています。それは間違っています。クエリを変更します。

Y/M/D のように日付を挿入すると、データベースに null 値が挿入されます。

PHP を使用していて、フォームから取得する日付が Y/M/D のような場合は、ステートメントを使用してこれを置き換えることができます。

out_date=date('Y-m-d', strtotime(str_replace('/', '-', $data["input_date"])))
于 2015-07-17T15:52:12.687 に答える