MySQL查询没有提取明年的记录

时间:2015-05-20 22:24:20

标签: mysql sql select date-format

我有一个基本查询,它将从两个表中提取记录,标准是日期等于或大于今天。它将仅为今年取得一切。它看起来像这样:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

如果其中有'mm/dd/yyyy'格式的日期值的字符串表示,则比较存在问题,因为这将是逐字符比较。如果“月份”不相等,则比较将以结果结束它检查年份。正如所写的那样,比较说,两年前的12月是今天之后(例如2015年5月)。

要将其作为实际“日期”值进行比较,您确实需要将该字符串转换为实际的DATE,然后与另一个DATE进行比较,如下所示:< / p>

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