2017-03-23 8 views
0

私はデータベースがあり、そこにはレコードの作成日が格納されています。問題は、私がSELECTのすべてのレコードを1年以内にしようとすると、返される行はありません。MySQL - BETWEEN句がDATETIMEで正常に動作しない

私は私が持っていると私がやろうとしているを示すためにSQLFiddleを作成:http://sqlfiddle.com/#!9/33a32b/8

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date` 
    FROM aux 
    WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()' 
    ORDER BY `formatted_date` DESC; 
+0

あなたのコードもここに入れてください。 SQLFiddleは常にオンラインではありません。 –

答えて

2

これはあなたのクエリです:

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date` 
FROM aux 
WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()' 
ORDER BY `formatted_date` DESC; 

単一引用符が正しくありません。日付式ではなく文字列定数があります。私もORDER BYを変更

SELECT aux.description, 
     DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS formatted_date 
FROM aux 
WHERE aux.date_creation >= CURDATE() - INTERVAL 1 YEAR 
ORDER BY aux.date_creation DESC; 

注:おそらく、date_creationので、あなたが必要とするすべては、過去にあります。通常、1月2日は2月1日ではなく、1月1日に続くことを望む。

+0

私は一重引用符内の関数を使用していたが問題はなかった。これはちょうどこの単一のクエリで発生しました。奇妙なもの。ありがとう、男! – Minoru

関連する問題