检查日期的日期是否在日期名称列数据中

问题描述 投票:0回答:1

我正在尝试获取where子句条件以检查dayname在列数据列表中。例如,如果今天是星期一,并且数据库列具有“星期一,星期二”,则返回True。

ID | Days               | Action
1  | 'Monday', 'Tuesday'| Task1
2  | 'Sunday', 'Friday' | Task3

我想知道今天是星期一,然后返回任务1。

SELECT * FROM test_table t where DAYNAME(NOW()) in (t.days)

上面的语句无法获得结果。

mysql date mysql-error-1064 sql-date-functions
1个回答
0
投票

我不建议您使用逗号分隔的列表在数据库中存储多个值。正确的方法是规范化数据并将每个值放在related表中的单独记录中。

但是字面上的解决方案您的问题是使用FIND_IN_SET()MySQL函数。它返回值的索引(从1开始);如果str不在strlist中,则返回0。下一个困难是您将值存储在单引号中。因此,在WHERE子句中,必须像

那样对其进行转义。
... WHERE FIND_IN_SET('\'Monday\'', Days)

再次,我建议您改为normalize your data

© www.soinside.com 2019 - 2024. All rights reserved.