我的数据表。现在需要第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'
但它不起作用。有什么好的替代方案吗?如果有的话,请建议我或帮助我。我在这个问题上陷得很深。谢谢
qni6mghb1#
首先,您应该真正考虑修复数据;而不是将它们存储为逗号分隔的值。do read:在数据库列中存储分隔列表真的那么糟糕吗?其次,即使使用当前的方法,您也需要注意mysql日期格式是yyyy-mm-dd,而不是dd-mm-yyyy(在存储值中)。你需要使用 Str_to_Date() 函数,以便能够做适当的日期比较。
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'
1条答案
按热度按时间qni6mghb1#
首先,您应该真正考虑修复数据;而不是将它们存储为逗号分隔的值。do read:在数据库列中存储分隔列表真的那么糟糕吗?
其次,即使使用当前的方法,您也需要注意mysql日期格式是yyyy-mm-dd,而不是dd-mm-yyyy(在存储值中)。
你需要使用
Str_to_Date()
函数,以便能够做适当的日期比较。