-1

私を助けてください。テーブル A があります。日付形式は dd/mm/yy で、時間形式は hh:mm:ss am/pm です。

╔══════════╦═════════════╦═════════════╦═════════╗
║   DATE   ║    TIME     ║    PHONE    ║ MESSAGE ║
╠══════════╬═════════════╬═════════════╬═════════╣
║ 25/09/07 ║ 01:57:55 PM ║ 62856979898 ║ Tes a   ║
║ 25/09/07 ║ 04:56:51 PM ║ 62856123467 ║ Tes B   ║
╚══════════╩═════════════╩═════════════╩═════════╝

日付と時刻の間のデータを検索するクエリの方法。

4

2 に答える 2

4

これは、データベースにデータ型を適切に格納しないことによる欠点の 1 つです。日付はDATEまたはとして保存する必要がありますDATETIME

を使用している場合は、文字列を日付に変換MySQLするを使用できます。STR_TO_DATE

SELECT  *
FROM    tableName
WHERE   STR_TO_DATE(CONCAT(date, ' ', time), '%d/%m/%y %h:%i:%s %p') 
        BETWEEN '2007-09-25 13:00:00' AND '2007-09-25 14:00:00'

出力

╔══════════╦═════════════╦═════════════╦═════════╗
║   DATE   ║    TIME     ║    PHONE    ║ MESSAGE ║
╠══════════╬═════════════╬═════════════╬═════════╣
║ 25/09/07 ║ 01:57:55 PM ║ 62856979898 ║ Tes a   ║
╚══════════╩═════════════╩═════════════╩═════════╝

現在の設計のいくつかの欠点:

  • 日付と時刻を直接比較できない
  • インデックスを使用できません
  • など...
于 2013-03-25T08:46:35.557 に答える
0

BETWEENキーワードを使用

 "SELECT * FROM table_A WHERE date BETWEEN '" . $from_date . "' AND  '" . $to_date . "'"
于 2013-03-25T08:49:21.097 に答える