SQL-запрос для выбора дат между двумя датами, где даты хранятся с запятыми

я использую Multidatespicker поэтому у меня есть даты в моей базе данных следующим образом:

ID    POST  KEY                  VALUE
1     1     multipledates        20151020, 20151015, 20151101
2     2     multipledates        20151103
3     3     multipledates        20151022, 20151010, 20151202, 20160410
...

Тогда у меня есть «date_start» и «date_end». Мне нужно выбрать даты между этими датами.

Этот запрос SQL работает только в моем примере с ID2 (потому что у него нет запятых)

SELECT ... BETWEEN $date_start AND $date_end

Решением было бы использовать что-то вроде ‘LIKE’, но не по возможности:

SELECT ... BETWEEN LIKE '%$date_start%' AND LIKE '%$date_end%'

Есть идеи?

Благодарю.

1

Решение

Вы должны перепроектировать свою схему наверняка.

Но в качестве учебного примера вы можете:

http://sqlfiddle.com/#!9/22755/4

SELECT t.id,
t.date
FROM (SELECT
t1.id,
DATE(SUBSTRING_INDEX(SUBSTRING_INDEX(t1.value, ',', numbers.n), ',', -1)) `date`
FROM
numbers
INNER JOIN t1
ON CHAR_LENGTH(t1.value)
-CHAR_LENGTH(REPLACE(t1.value, ',', ''))>=numbers.n-1
ORDER BY
id, n ) t
WHERE t.date BETWEEN $date_start AND $date_end

Обратите внимание, что это решение ожидает, что у вас есть numbers таблица со значениями записи от 1 до максимального количества элементов в вашем valueколонка списка.

(в) код, основанный на https://stackoverflow.com/a/17942691/4421474

3

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

Других решений пока нет …

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