如何搜索带有逗号分隔日期值的列中的数据?

8zzbczxx  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(279)

我的数据表。

现在需要第1、2、4行作为输出:
我试试这个:

SELECT * FROM my_table 
WHERE SUBSTRING_INDEX(my_table.`dates`, ',', 1) >= '01-01-2018'
AND SUBSTRING_INDEX(my_table.`dates`, ',', - 1) <= '13-02-2018'

但它不起作用。有什么好的替代方案吗?如果有的话,请建议我或帮助我。我在这个问题上陷得很深。谢谢

qni6mghb

qni6mghb1#

首先,您应该真正考虑修复数据;而不是将它们存储为逗号分隔的值。do read:在数据库列中存储分隔列表真的那么糟糕吗?
其次,即使使用当前的方法,您也需要注意mysql日期格式是yyyy-mm-dd,而不是dd-mm-yyyy(在存储值中)。
你需要使用 Str_to_Date() 函数,以便能够做适当的日期比较。

SELECT * FROM my_table 
WHERE STR_TO_DATE(SUBSTRING_INDEX(my_table.`dates`, ',', 1), '%d-%m-%Y') >= '2018-01-01'
AND STR_TO_DATE(SUBSTRING_INDEX(my_table.`dates`, ',', - 1), '%d-%m-%Y') <= '2018-02-13'

相关问题