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

时间:2018-07-17 17:52:20

标签: mysql datediff

我有2张桌子:

  • 图片:picture_id,picture_date
  • picture_user:pictured_id,user_id(发布图片的用户)

我想吸引发布不到一年的图片的用户。我得到了三列(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)

1 个答案:

答案 0 :(得分:0)

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