前几天发了一张帖子,就是关于显示5天内这种日期比较,
http://www.oso.com.cn/forum/read.php?theme_id=7459
主要的论点是集中在select something from table where to_days(now()) – to_days(date_col) select to_days(now(0)); +————————–+ | to_days(now()) | +————————–+ | 730839 | +————————–+
出来的是当前时间距离公元0年的总日数,接着我试着用上面的语句测试;
mysql>select to_days(now()) – to_days(date_col) select to_days(now()) – to_days(5); 出现结果: +—————————+ |to_days(now()) – to_days(5)| +—————————+ | null | +—————————+
啊?不会吧?这样也不行啊? 我接着试命令 mysql>select 。。。。
突然猛的想到,嘿嘿,to_days(now())出来的是整数,我直接跟整数运算就行了,何必再to_days(date)呢?马上试验
mysql>select to_days(now()) – 5; +————————–+ | to_days(now()) -5 | +————————–+ | 730834 | +————————–+
ok,万岁,终于得到了我想要的结果,呵呵 下面就是在php代码中用select 查询了
我存数据库向来的习惯就是dateandtime用now()直接赋值,显示的时候不用格式化,直接取出来就能用,
下面是我的一个库的部分结构 create table infomess ( infoid int(11) not null auto_increment, topic varchar(255) not null, …… email varchar(50), dateandtime datetime default 1970-01-01 00:00:00 not null, primary key (infoid) );
这里的dateandtime是标准的日期格式,然后我要查询5天内的记录,下面是sql查询语句 $sql=”select * from infomess where to_days(dateandtime) >= (to_days(now()) – 5) order by infoid desc limit $offset,$psize”;
就要一个where to_days(dateandtime) >= (to_days(now()) – 5)就够了 后面的是另外的,这里的5可以设为一个变量
where to_days(dateandtime) >= (to_days(now()) – $limitdays)
然后$limitdays可以用get方式传递(多数是有get方式传递)
在你的php后面跟上?limitdays=5就行了 显示10天内也一样,$limitdasy改成10就行了
以上是利用mysql函数得到这样的结果,以上的结果都经过测试,因为时间匆忙,如果代码有什么问题,请跟帖提出,谢谢
还有朋友说利用unix戳记来得到这样的结果,请问哪位写过这样的代码,贴点出来,供大家参考比较,也可以测试判断一下php函数还是mysql函数实现的效率高
http://www.bkjia.com/phpjc/532466.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532466.htmltecharticle前几天发了一张帖子,就是关于显示5天内这种日期比较, http://www.oso.com.cn/forum/read.php?theme_id=7459 主要的论点是集中在select something from tab…