我有稱爲測試一個MySQL表,該結構代碼如下的MySQL STR_TO_DATE V/S DATE_FORMAT
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'
但是,當我使用以下命令時,它會返回兩行,如預期。
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函數通過一個網站。現在看來我必須更新整個網站。
謝謝。
如果您不確定某個功能,至少在比較中加入一些邏輯。年份將一直增加,月份將每13日重置一次,日期將爲最短1最多31.爲什麼不將它安排爲年|月|日,因此您可以安全地允許查詢自動將其作爲數字進行比較。 –