SQL查询,用逗号存储日期的两个日期之间的日期

时间:2015-10-15 16:22:38

标签: php mysql sql date jquery-multidatespicker

我使用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 个答案:

答案 0 :(得分:3)

您应该重新设计架构。

但就像研究案例一样,你可以:

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表中的value列表列中包含1到最大元素数的记录值。

(c)基于https://stackoverflow.com/a/17942691/4421474

的代码