首页 > 解决方案 > 与日期函数一样

问题描述

我有一个将日期存储为文本而不是 date_time 的表。我想选择今天发生的行。我可以硬编码日期,但很明显我想动态地做。

SELECT * FROM view WHERE anniversary LIKE '%09-07'

SELECT * FROM view WHERE anniversary LIKE '%' + DATE_FORMAT(now(), "%m-%d")

标签: mysqlsql

解决方案


首先,您应该将日期存储为dates,而不是字符串。

但是,如果它们存储为字符串,则可以使用如下比较:

where right(anniversary_datestring, 5) = str_to_date(curdate(), '%m-%d')

但是,我建议修复您的数据。如果值的格式为 YYYY-MM-DD,只需执行以下操作:

alter table t modify column anniversary date;

推荐阅读