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

kknvjkwl  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(332)

我有两张table:
图片:图片id,图片日期
picture\u user:pictured\u id,user\u id(发布图片的用户)
我想得到的用户谁发布了不到一年的图片。我得到了三列( pid , userid , p_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)
tzcvj98z

tzcvj98z1#

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

相关问题