MySQL 查询未调出明年的记录

MySQL query not pulling up records for next year

我有一个从两个表中提取记录的基本查询,条件是日期等于或大于今天。它只会获取今年的所有东西。它看起来像这样:

ds_postmeta.meta_value >=Date_Format(CURDATE(), ('%m/%d/%Y'))

有什么想法吗?我以前从未见过这个

date_format 获取日期并将其转换为字符串,这意味着您正在比较两个字符串,强制进行字典顺序比较而不是比较实际日期。相反,您应该使用 str_to_datemeta_value 转换为日期,然后再将其与当前日期进行比较:

STR_TO_DATE(ds_postmeta.meta_value, '%m/%d/%Y') >= CURDATE()

这实际上取决于 meta_value 中存储的内容。

如果其中的内容是 'mm/dd/yyyy' 格式的日期值的字符串表示,则比较存在问题,因为这将是一个字符一个字符的比较。如果 "month" 不相等,比较将以结果 结束,然后 检查年份。正如所写,比较表明两年前的 12 月是 今天(例如 2015 年 5 月)之后。

要将其作为实际 "date" 值进行比较,您确实需要将该字符串转换为实际 DATE,然后与另一个 DATE 进行比较像这样:

STR_TO_DATE(ds_postmeta.meta_value,'%m/%d/%Y') > CURDATE()