无法获得使用 datediff 返回的正确行

Not able to get the correct rows returned with datediff

我有 2 个表:

我想获取在不到一年内发布过图片的用户。我得到了三列(piduseridp_date),但也返回了一些 p_date 大于 1 年的行。

SELECT p_picuser.pid,p_date,userid from p_pictures, p_picuser 
where p_pictures.pid=p_picuser.pid  
    AND (datediff(STR_TO_DATE(p_date, '%Y-%m-%d'),CURDATE())<365)

MySQL 文档指出 datediff 是 date1 - date2。 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff

如果您要将现在与过去的日期进行比较(试图找出某物的年代),则需要从 curdate() 中减去这些日期——而不是相反。

请参阅文档中的这些示例:

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
        -> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
        -> -31