大于日期的条件给出错误的值

时间:2016-03-09 10:50:51

标签: mysql

我写了一个查询来获取比日期更大的所有记录。我的问题是

SELECT DATE_FORMAT(`user_registered`, '%d-%m-%Y') FROM `wp_users` `a` JOIN
`wp_usermeta` `b` ON `a`.`ID`=`b`.`user_id` WHERE `b` .`meta_key` = 
'wp_capabilities' AND (DATE_FORMAT(`user_registered`, '%d-%m-%Y')> 
 '08-03-2016' );

然后我的结果包含2014年和2015年的一些日期,如

| 08-12-2014                                 |
| 18-06-2015                                 |
| 08-06-2015                                 |
| 21-10-2015                                 |
| 14-07-2015                                 |
| 09-11-2015 

我哪里错了?

1 个答案:

答案 0 :(得分:1)

DATE_FORMAT()返回一个字符串,当它与另一个字符串' 08-03-2016'进行比较时,它们将被比作字符串。

因此,你可以看到'字符串'大于字符串' 08-03 ..'归还。

SELECT DATE_FORMAT(`user_registered`, '%d-%m-%Y') 
FROM `wp_users` `a` JOIN
    `wp_usermeta` `b` ON `a`.`ID`=`b`.`user_id` 
WHERE `b` .`meta_key` = 'wp_capabilities' AND 
    DATE(`user_registered`) > STR_TO_DATE('08-03-2016', '%d-%m-%Y');