1

時刻は「09:21 am」としてデータベースに保存されます

どうすれば範囲結果を取得できますか

例えば

select * from tablename where stored_time between '09:21 am' and '10:05 pm';

上記のクエリを試しましたが、適切な結果が得られません。これは、時刻が varchar として格納されるためです。

この文字列を時間に変換して mysql でクエリする関数はありますか?

4

2 に答える 2

5

STR_TO_DATE()次の形式で使用します。

SELECT STR_TO_DATE(UPPER('09:21 am'), '%h:%i %p');
/* 09:21:00 */

%h= 時間 00-12

%i= 分

%p= AM/PM (UPPER()小文字バージョンと一致するように大文字に変換されます)

したがって、完全なクエリは次のとおりです。

SELECT * 
FROM tablename 
WHERE 
  /* Use 24h time for the comparison values and wrap stored_time in the STR_TO_DATE() */
  STR_TO_DATE(UPPER(stored_time)) between '09:21:00' and '22:05:00';

値を文字列として格納するのではなく、この列を実数TIMEまたは型に切り替えることをお勧めします。DATETIME

于 2012-07-13T13:05:21.173 に答える
1

を活用できますDATE_FORMAT(date,format)ドキュメンテーション

select * from tablename where DATE_FORMAT(stored_time,'%h:%i %p') between 
       DATE_FORMAT('09:21 am','%h:%i %p') and DATE_FORMAT('10:05 pm','%h:%i %p');
于 2012-07-13T13:09:29.473 に答える