MySQL Varchar для хранения дат, несовместимых в конце года?

База данных MySQL имеет годы записей начиная с 2015 года, но теперь все запросы, которым необходимо использовать дату записи, имеют проблему, пересекающую период с 2015 по 2016 год. При просмотре в базе данных дата была сохранена как Varchar. Теперь запускаем запрос

SELECT SUM( salesPrice ) AS total
FROM sales
WHERE salesDate >=  '01-01-2016'
AND salesDate <=  '02-07-2016'

«Итого» неверно. Он корректно запрашивает записи с salesDate от 01-01-2016 по 01-07-2016 (текущий день), но затем продолжает добавлять к итогу, используя элементы прошлого года.

Каков разумный способ преобразовать столбец и переформулировать запрос, чтобы остановить эту ошибку?

2

Решение

использование STR_TO_DATE

SELECT SUM( salesPrice ) AS total
FROM sales
WHERE STR_TO_DATE(salesDate,'%m-%d-%Y') >=  '2016-01-01'
AND STR_TO_DATE(salesDate,'%m-%d-%Y') <=  '2016-02-07'

Обратите внимание, что MySQL использует формат даты Y-m-d по умолчанию, так что это то, что он ожидает.

3

Другие решения

С макушки головы, возможно попробуйте:

SELECT SUM( salesPrice ) AS total
FROM sales
WHERE FROM_UNIXTIME(salesDate) >=  $time_from
AND FROM_UNIXTIME(salesDate) <=  $time_to

где $ time_from а также $ time_to преобразуются в формат отметки времени с помощью PHP StrToTime () функция

0

По вопросам рекламы [email protected]