主要的论点是集中在SELECT something FROM table WHERE TO_DAYS(NOW()) TO_DAYS(date_col) <= 5; 上,我试验了半天,结果还是出错,今天看了MYSQL的函数,终于出来了结果,不敢独享,贴出来供大家研究,(虽然技术含量不高,别扔我柿子就行,呵呵) MYSQL的TO_DAYS(DATE)函数是这样说明的: 传回DATE到公元0年的总日数,我测试了一下 mysql>select to_days(now()); ++ | TO_DAYS(NOW())| ++ | | ++ 出来的是当前时间距离公元年的总日数接着我试着用上面的语句测试 mysql>select TO_DAYS(NOW()) TO_DAYS(date_col) <= ; 出现结果 ERROR :Unknown column date_col in field first 此路不通了我就试着直接把代到date_col里去 mysql>select to_days(now()) to_days(); 出现结果 ++ |to_days(now()) to_days()| ++ | NULL| ++ 啊?不会吧?这样也不行啊? 我接着试命令 mysql>select 突然猛的想到嘿嘿to_days(now())出来的是整数我直接跟整数运算就行了何必再to_days(date)呢?马上试验 mysql>select to_days(now()) ; ++ | to_days(now()) | ++ | | ++ OK万岁终于得到了我想要的结果呵呵 下面就是在PHP代码中用SELECT 查询了 我存数据库向来的习惯就是DATEANDTIME用NOW()直接赋值显示的时候不用格式化直接取出来就能用 下面是我的一个库的部分结构 CREATE TABLE infomess ( infoid int() NOT NULL auto_increment topic varchar() NOT NULL …… email varchar() dateandtime datetime DEFAULT :: NOT NULL PRIMARY KEY (infoid) ); 这里的DATEANDTIME是标准的日期格式然后我要查询天内的记录下面是SQL查询语句 $sql=select * from infomess where to_days(dateandtime) >= (to_days(now()) ) order by infoid desc limit $offset$psize; 就要一个where to_days(dateandtime) >= (to_days(now()) )就够了 后面的是另外的这里的可以设为一个变量 where to_days(dateandtime) >= (to_days(now()) $limitdays) 然后$limitdays可以用GET方式传递(多数是有GET方式传递) 在你的PHP后面跟上?limitdays=就行了 显示天内也一样$limitdasy改成就行了 以上是利用MYSQL函数得到这样的结果以上的结果都经过测试因为时间匆忙如果代码有什么问题请跟帖提出谢谢 还有朋友说利用UNIX戳记来得到这样的结果请问哪位写过这样的代码贴点出来供大家参考比较也可以测试判断一下PHP函数还是MYSQL函数实现的效率高 |