SQL 查询两个日期之间的 select 日期,其中日期以逗号存储
SQL query to select dates between two dates where dates are stored with commas
我正在使用 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'。我需要 select 这个日期之间的日期。
此 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
table 的记录值从 1 到 value
列表列中的最大元素数。
(c) 代码基于
我正在使用 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'。我需要 select 这个日期之间的日期。
此 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
table 的记录值从 1 到 value
列表列中的最大元素数。
(c) 代码基于