PHP+MYSQL网站开发中关于时间的问题,看看当遇到时间的问题时,该如何处理呢?
PHP和MYSQL中没有像ASP和MSSQL那样有DateDiff这个函数直接比较,MYSQL5.0已经支持DateDiff了,但是4.x还不支持。。。 下面分别来看PHP和MYSQL查询时如何比较。。。
先看PHP:
$date1 = ''2008-05-30''; $date2 = ''2008-06-05''; $from = mktime(0,0,0,date("m",strtotime($date1)),date("d",strtotime($date1)),date("Y",strtotime($date1))); $to = mktime(0,0,0,date("m",strtotime($date2)),date("d",strtotime($date2)),date("Y",strtotime($date2))); $datediff = ($to - $from)/86400; echo $datediff;
返回值:6
MYSQL就简单地写一条SQL语句就清楚了: select * from tb where (TO_DAYS(expiredDate)-TO_DAYS(NOW()))<=3 。。。 5.0以上的MYSQL就直接DateDiff了。。。
以下是某人总结的: 30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。 mysql> select DAYOFWEEK(''1998-02-03''); -> 3
WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。 mysql> select WEEKDAY(''1997-10-04 22:23:00''); -> 5 mysql> select WEEKDAY(''1997-11-05''); -> 2
DAYOFMONTH(date) 返回date的月份中日期,在1到31范围内。 mysql> select DAYOFMONTH(''1998-02-03''); -> 3
DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。 mysql> select DAYOFYEAR(''1998-02-03''); -> 34
MONTH(date) 返回date的月份,范围1到12。 mysql> select MONTH(''1998-02-03''); -> 2
DAYNAME(date) 返回date的星期名字。 mysql> select DAYNAME("1998-02-05"); -> ''Thursday''
MONTHNAME(date) 返回date的月份名字。 mysql> select MONTHNAME("1998-02-05"); -> ''February''
QUARTER(date) 返回date一年中的季度,范围1到4。 |