я использую 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%'
Есть идеи?
Благодарю.
Вы должны перепроектировать свою схему наверняка.
Но в качестве учебного примера вы можете:
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
Других решений пока нет …