MySQL 查询未调出明年的记录
MySQL query not pulling up records for next year
我有一个从两个表中提取记录的基本查询,条件是日期等于或大于今天。它只会获取今年的所有东西。它看起来像这样:
ds_postmeta.meta_value >=Date_Format(CURDATE(), ('%m/%d/%Y'))
有什么想法吗?我以前从未见过这个
date_format
获取日期并将其转换为字符串,这意味着您正在比较两个字符串,强制进行字典顺序比较而不是比较实际日期。相反,您应该使用 str_to_date
将 meta_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()
我有一个从两个表中提取记录的基本查询,条件是日期等于或大于今天。它只会获取今年的所有东西。它看起来像这样:
ds_postmeta.meta_value >=Date_Format(CURDATE(), ('%m/%d/%Y'))
有什么想法吗?我以前从未见过这个
date_format
获取日期并将其转换为字符串,这意味着您正在比较两个字符串,强制进行字典顺序比较而不是比较实际日期。相反,您应该使用 str_to_date
将 meta_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()