2017-02-21 28 views
0

У меня есть столбец MySQL установить следующуюMySQL SELECT, строка запроса Раскол значение поиска

DateRange = 02/27/2017 - 02/29/2017

Теперь я хотел бы

SELECT * FROM leaves WHERE daterange (>= firstvalue && <= secondvalue) 

Это можно сделать? Разделите каждое значение, так как они сохранены как одна строка? В противном случае, я думаю, мне придется разделить daterange, прежде чем он будет вставлен в таблицу.

+0

Какие типы данных относятся к дате, первому значению и второму значению? – scaisEdge

+0

@ Chad. , , разделите диапазон дат, прежде чем он будет вставлен в таблицу. Не создавайте бодрость. –

ответ

1

Предполагая DateRange, firstvalue и SecondValue является правильной датой данных (DateTime) типа можно использовать между

SELECT * 
FROM leaves 
WHERE daterange BETWEEN firstvalue AND secondvalue 

если выполнявшие некоторые значения не типа данных даты, но VARCHAR вы должны надлежащим новообращенным использованием str_to_date или

+0

Спасибо, однако значения firstvalue и secondvalue не существуют, только daterange делает, и буквально хранится как varchar типа "02/27/2017 - 02/29/2017". Угадай, что это невозможно, да? – Robert

+0

, так что вы должны разделить строку на две части. .. для obatin буксировка отличное значение ..? , – scaisEdge

0

Во-первых, исправьте структуру данных. Вот вещи, которые неправильно с хранением диапазона вроде:

  • Даты должна быть сохранена в собственном формате (date или datetime), а не строки.
  • Столбцы должны иметь одно значение.
  • Необходимость выполнения строковых манипуляций в столбце обычно исключает использование индексов.

Это говорит о том, что иногда вы застряли в очень плохих проектных решениях других людей. Таким образом, если вы полностью не можете исправить структуру данных, есть обход. Вы можете преобразовать диапазон в значения, которые вам нужны:

where $date >= str_to_date(left(daterange, 10), '%m-%d-%Y') and 
     $date <= str_to_date(right(daterange, 10), '%m-%d-%Y') 
+0

Спасибо! Я согласен, структура данных полностью перепутана, я пытаюсь обновить чужой проект. Я отдам это. – Robert

 Смежные вопросы

  • Нет связанных вопросов^_^