Неверный результат при сравнении двух дат (строка)
У меня есть стол test
в моей базе данных MySQL. Ниже описано, как оно создано.
CREATE TABLE `test` (
`update_date` varchar(10) NOT NULL,
`value` double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Ниже приведены его данные.
Я запускаю запрос ниже, как описано в выбранном ответе здесь
SELECT SUM(`value`) FROM `test`
WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y') BETWEEN '01-10-2014' AND '31-10-2014'
Это должно вернуть 1800, но вместо этого он вернулся NULL
, Почему это так и как я могу получить правильный ответ?
Очень важно: я должен использовать String
за Date
потому что я должен сохранить дату в dd-mm-yyyy
формат и MySQL Date
не принимайте это.
1 ответ
Попробуй это:
SELECT SUM(`value`) FROM `test`
WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y')
BETWEEN STR_TO_DATE('01-10-2014', '%d-%m-%Y') AND STR_TO_DATE('31-10-2014', '%d-%m-%Y')
или вы также можете сделать это:
SELECT SUM(`value`) FROM `test`
WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y')
BETWEEN '2014-10-01' AND '2014-10-31' -- in Y-m-d
Оба запроса должны вернуть 1800.
Обратите внимание, что STR_TO_DATE() возвращает значение DATETIME, которое находится в Y-m-d
формат.