检测网站是否为WordPress,长沙高新区住房和建设管理局网站,重庆国外网站推广,免费软件园当前一个业务需求#xff0c;需要查找创建在三天以前的数据#xff0c;表中是存了一个创建时间的#xff1b;这个需求看起来很简单#xff0c;直接全部查找出来然后用代码根据时间筛选一下就可以了。但这只是适用于数据量不大的情况下#xff0c;如果数据量大#xff0c;…当前一个业务需求需要查找创建在三天以前的数据表中是存了一个创建时间的这个需求看起来很简单直接全部查找出来然后用代码根据时间筛选一下就可以了。但这只是适用于数据量不大的情况下如果数据量大又要分页的话还用代码实现的话很可能会造成内存不足的问题。我认为mysql肯定提供了一些关于时间计算的函数google一下果不其然发现了datediff和timediff这样的函数datediff(date1date2)计算date1减去date2的天数但是计算规则限定死了只按日期相减29号早上减去28号晚上结果还是为1如图1图1这跟我们常识不太一样我们的常识是现在是早上11点那么到昨天早上11点才算是一天昨天晚上11点到今天早上11点智能算半天。所以不能用datediff函数只能用timediff函数timediff(time1time2)计算time1减去time2的时间数这个减出来的是个time类型而且还不能直接比较大小这就很尴尬了。图2如图2相减出来有一百多个小时的有几十个小时的但是如果加入时间相差大于20个小时这个限制条件之后问题就来了图3如图3相差一百多个小时的并没有被筛选出来。我猜测这个时间可能用的位运算之类的具体没有去求证。所以相减出来的结果是没有办法直接比较大小的这时候就需要把这个结果转换成可以直接比较大小的秒数用time_to_second(time1)这个函数然后直接把限定的时间差也转换成秒数比如一天24x3600秒依此类推然后就可以直接做筛选了。