Может ли MYSQL фильтровать по дате, если дата хранится в виде текста? бывший "10.02.1984" - PullRequest
3 голосов
/ 01 апреля 2010

Я пытаюсь изменить приложение для клиента, у которого уже есть база данных более 1000 наименований. Даты хранятся в виде текста в базе данных в формате «02/10/1984». Система позволяет динамически добавлять и удалять поля в каталоге, а также позволяет расширенному поиску разрешать определенные поля.

Проблема в том, что он не был разработан с учетом дат, поэтому, когда я устанавливаю поле в качестве даты и пытаюсь выполнить поиск по диапазону, запрос пытается выполнить AND (cfv0.value> = 01 / 02/2004 И cfv0.value <= 05/03/2008). Я могу сделать так, чтобы переданный диапазон дат представлял собой числовое значение времени. Есть ли способ, что при отправке запроса он берет текстовые поля (с датой) и преобразует его в числовое значение времени, так что в этот момент я просто сравниваю числа, которые будут работать нормально. </p>

У меня нет возможности изменить текущую дату на числовое значение из-за способа настройки динамических полей.

Спасибо, ребята!

Ответы [ 2 ]

4 голосов
/ 01 апреля 2010

Вы хотите преобразовать как входящий запрос, так и дату в столбце, так что-то вроде этого (при условии, что он в порядке месяц / день / год):

AND STR_TO_DATE(cfv0.value, '%m/%d/%Y') >= STR_TO_DATE('01/02/2004', '%m/%d/%Y')
1 голос
/ 01 апреля 2010

Обратите внимание, что в будущем, если вы хотите, чтобы даты, хранящиеся в виде строки, сортировались одинаково по алфавиту и в хронологическом порядке, сохраняйте их в формате с нулями, четырехзначном формате год, месяц, день, например:

2004/01/20
2004/10/05
2006/12/31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...