根据到期时间,我需要提前五天查询到,例如2022-9-30号到期,提前5天,2022-9-25号知道数据,应该用什么MySQL语句
SELECT current_date()-5
SELECT DATE_ADD('2022-09-30', INTERVAL '-5' DAY);
要看下日期格式是什么样,最好转化下
SELECT a. * FROM table a where DATE_FORMAT(a.time,"%Y-%m-%d") = SELECT DATE_ADD(CURDATE(), INTERVAL '5' DAY) -- 五天后
您好,这种需求可以有以下两种解法:
1、直接利用数据库的日期函函数来进行查询,如:select * from tablename t where date_format(time,"%y-%m-%d") = select DATE_ADD(CURDATE(), INTERVAL '-5' DAY);
这种解法,能正常查询,但是因为where后面使用了date_format(),因此无法有效利用索引,查询性能不太好。这种做法的好处在于能保证时间没有时差(都读的数据库服务器的时间)
2、应用程序和数据库结合:在后台计算出过期时间,然后传入到sql中查询,比如select * from tablename where time = ? ;将后台计算的过期时间传过来即可。这种查询可以在time字段建立索引,数据量大的时候有较大优势。缺点就是要保证应用服务器的时间和数据库服务器的时间一致,防止出现有时差出现。
希望对你有帮助。