web-dev-qa-db-ja.com

日付/時間の範囲からデータを選択します

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タイプに強制する必要がありますか?

63
codingknob

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

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;
119
Eugen Rieck

日付関数を使用した簡単な方法を次に示します。

select *
from hockey_stats
where date(game_date) between date('2012-11-03') and date('2012-11-05')
order by game_date desc
17
Gordon Linoff

簡単な方法:

select  * from  hockey_stats 
where  game_date >= '2012-03-11' and game_date  <= '2012-05-11'
8
rashedcs

おそらく 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を使用する必要があるかもしれません)

5
fthiella

MySQLの日付形式は、Y-M-Dです。 Y/M/Dを使用しています。それは間違っています。クエリを変更します。

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

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

out_date=date('Y-m-d', strtotime(str_replace('/', '-', $data["input_date"])))
4

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

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

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

次の方法でも時間を考慮してください。select * from hockey_stats where(game_date between between '2018-02-05 01:20:00' and '2018-02-05 03:50:00');これはMySQLサーバー用です。

3
C T Mithun

データベースにそのgame_dateデータを挿入する方法について、日付ディフェンスを検索する必要があります。たとえば、長い日付または短い日付値を挿入した場合。

SELECT * FROM hockey_stats WHERE game_date >= "6/11/2018" AND game_date <= "6/17/2018"

BETWEENを使用することもできます:

SELECT * FROM hockey_stats WHERE game_date BETWEEN "6/11/2018" AND "6/17/2018"

そのような単純な。

2
ramber

STR_TO_DATE functionを使用して、投稿した形式に基づいて独自の日付パラメーターを渡すことができます。

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;

または、MySQLが日付YYYY:MM:DD HH:mm:SSを処理する形式を使用し、クエリを

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;

2
Girish Pandey