testというmysqlテーブルがあります。構造コードを以下に示します。
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`assigned_date` date NOT NULL
) ENGINE=InnoDB
そして、テーブルには次のデータが含まれています。
INSERT INTO `test` (`id`, `name`, `assigned_date`) VALUES
(0, 'A', '2012-12-23'),
(0, 'B', '2012-12-25');
ここで問題となるのは、次のクエリを実行しても行が返されないことです。
SELECT name
FROM test
WHERE
DATE_FORMAT(assigned_date, '%m/%d/%Y') >= '12/01/2012'
AND
DATE_FORMAT(assigned_date, '%m/%d/%Y') <= '01/02/2013'
しかし、次のコマンドを使用すると、期待どおりに2行が返されます。
SELECT name
FROM test
WHERE
assigned_date >= STR_TO_DATE('12/01/2012', '%m/%d/%Y')
AND
assigned_date <= STR_TO_DATE('01/02/2013', '%m/%d/%Y')
違いはなんですか ?DATE_FORMATが機能しなかったのはなぜですか?
これを手伝ってください私はサイト全体でdate_format関数を使用しました。今、私はサイト全体を更新しなければならないようです。
ありがとう。