1

次のwhere句があります

AND  DATE_FORMAT( l.created_on,  "%d/%m/%Y" )  BETWEEN '06/02/2013' AND '07/02/2013' 

created_onタイムスタンプです。

何らかの理由で、クエリは前の月の行も返します。誰かが理由を知っていますか?

ノート :

日付をその特定の形式にする必要があります

4

2 に答える 2

1

Mysql 文字列の日付形式は、パターン yyyy-mm-dd に従います。タイムスタンプがある場合は日付に変換しないでください。タイムスタンプを比較するだけです。

WHERE l.created_on 
BETWEEN UNIX_TIMESTAMP('2012/02/06') AND UNIX_TIMESTAMP('2013/02/07')
于 2013-02-18T08:12:02.030 に答える
0

created_onすでに日付 ( datatype ) の場合、

を使用して直接クエリを実行できます。

WHERE created_on  BETWEEN '2013-02-06' AND '2013-02-07' 

ただし、日付が文字列の場合は使用しますSTR_TO_DATE

WHERE STR_TO_DATE(l.created_on,  '%d-%m-%Y')  BETWEEN '2013-02-06' AND '2013-02-07' 

更新 1

入力した日付の形式を変更したくないので、次を使用して形式を設定する必要がありますSTR_TO_DATE

WHERE l.created_on  BETWEEN STR_TO_DATE('06/02/2013','%d/%m/%Y') AND 
                            STR_TO_DATE('07/02/2013','%d/%m/%Y')
于 2013-02-18T08:09:46.213 に答える