-- DATE_SUB 加上 INTERVAL 代表把时间往前推N个小时,HOUR 是单位 -- 大于号后面的if是做了个非空判断 SELECT DATE_SUB(date_format(user.step_time, '%Y-%m-%d'), INTERVAL (user.cycle * 24) HOUR) > if(user.last_step_time is null, date_format(user.step_time, '%Y-%m-%d'), date_format(user.last_step_time, '%Y-%m-%d')) FROM `t_user_info` user where user.id = 112233; -- DATEDIFF 代表把两个时间相减 select DATEDIFF(DATE_FORMAT(user.step_time, '%Y-%m-%d %h:%i:%s'), user.last_step_time) > user.cycle FROM `t_user_info` user where user.id = 112233;