|
楼主 |
发表于 2006-9-10 03:12
|
显示全部楼层
我想到的一种方法是利用mysql的函数.
用到了msyql的date_format()和date_add()或date_sub()
select date_format(date_add($inputdate,interval $i day),'%Y%m%d');
注意到,这里用了$inputdate表示基日期.$i表示要得到的天数,要想得到前N天,就要在前面加个-号.
表示在$inputdate的基础上加$i天.
select date_format(date_sub($inputdate,interval $i day),'%Y%m%d');
使用date_sub时,$i不用-号,就可以表示取的是前$i天.加了-号就表示取后$i天了.
表示在$inputdate基础上减$i天.
看下运行情况:
- mysql> select date_format(date_add(20060904,interval 5 day),'%Y%m%d');
- +---------------------------------------------------------+
- | date_format(date_add(20060904,interval 5 day),'%Y%m%d') |
- +---------------------------------------------------------+
- | 20060909 |
- +---------------------------------------------------------+
- 1 row in set (0.01 sec)
- mysql> select date_format(date_add(20060904,interval -5 day),'%Y%m%d');
- +----------------------------------------------------------+
- | date_format(date_add(20060904,interval -5 day),'%Y%m%d') |
- +----------------------------------------------------------+
- | 20060830 |
- +----------------------------------------------------------+
- 1 row in set (0.00 sec)
- mysql> select date_format(date_sub(20060904,interval 5 day),'%Y%m%d');
- +---------------------------------------------------------+
- | date_format(date_sub(20060904,interval 5 day),'%Y%m%d') |
- +---------------------------------------------------------+
- | 20060830 |
- +---------------------------------------------------------+
- 1 row in set (0.00 sec)
- mysql> select date_format(date_sub(20060904,interval -5 day),'%Y%m%d');
- +----------------------------------------------------------+
- | date_format(date_sub(20060904,interval -5 day),'%Y%m%d') |
- +----------------------------------------------------------+
- | 20060909 |
- +----------------------------------------------------------+
- 1 row in set (0.00 sec)
复制代码 |
|