MYSQL时间与整型字段查询

我们在创建数据结构的时候,一般时间都会用NOW()来写入,当然部分可能涉及需要计算的,会直接用UNIX时间戳。

假设现在有一个产品表product,分别有以下字段

id=>产品自增ID,name=>产品名字,price=>产品价格,maxtime=>保质期(int11),time=>创建时间

如果我们需要获取产品超过保质期的。

(在这里也许有人会问,保质期直接写日期或者时间戳不就可以吗?是的,但这不是作者要写的问题解决方案。每个人开发业务的时候不同,有些时候保质期还只能INT)

来个SQL

‘SELECT * FROM product WHERE (UNIX_TIMESTAMP(time)+(maxtime*86400)) > ‘.time().’ AND (UNIX_TIMESTAMP(time)+(maxtime*86400)) < ‘.(time()+86399);’

说说原理吧:我们先将创建的时间time(TIMESTAMP类型)转成UNIX时间戳再加上最大保质期转秒数的时间,然后判断是否大于当前时间,并且小于当前时间+1天(该业务可能根据自身业务需求,来实现到当天的结束时间点)

发表评论

电子邮件地址不会被公开。 必填项已用*标注