重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
获取上个月最后一天
创新互联建站专注骨干网络服务器租用10多年,服务更有保障!服务器租用,中国电信成都枢纽中心 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
SELECT
date_sub( date_sub( date_format( now(), '%y-%m-%d' ), INTERVAL extract( DAY FROM now()) DAY ), INTERVAL 0 MONTH ) AS date
timestamp这种类型就是包含日期和时间的而且根据时区来显示的,将这列的类型设置为date时你看看这一列有没有允许空值,date是有效的数据类型报错的话一般都是没有允许空值后面还default
null,你可以用curdate()去返回当前日期。
?php
$m = date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y'))); //上个月的开始日期
echo $m."br";
$t = date('t',strtotime($m)); //上个月共多少天
echo $t."br";
$start = date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y'))); //上个月的开始日期
$end = date('Y-m-d', mktime(0,0,0,date('m')-1,$t,date('Y'))); //上个月的结束日期
?
查询的时候就查询日期在$start到$end之间的数据就是上个月的数据了。
select *
from 表
where 日期=date_add(curdate(),interval -1 month)
这样?
select
*
from
shipmentlist,shipmentscrib
where
(shipmentlist.shipmentlistno=shipmentscrib.shipmentlistno)
and (year(shipmentlist.shipmentdate)=year(now()))
and (month(shipmentlist.shipmentdate)=month(now())
or month(shipmentlist.shipmentdate)=month(now())-1 )
ORDER BY shipmentdate DESC
格式化了一下你的SQL,分析一下。
假如今天是 2012年1月1日。
那么上面的条件。
将变为
year = 2012 and month = 1 OR month = 0
其实,对于 查询 当月和上一月
相当于
shipmentlist.shipmentdate = 上月的1号
AND shipmentlist.shipmentdate 下月的1号
LAST_DAY(NOW()) 可以获取 本月的最后一天.
DATE_ADD( LAST_DAY(NOW()) INTERVAL 1 DAY ) 可以获取下月第一天。
DATE_SUB ( DATE_ADD( LAST_DAY(NOW()) INTERVAL 1 DAY ) INTERVAL 2 MONTH ) 可以获取上月的1号
(也就是用 下月的1号 减少2个月,从而获取 上月的1号)
最后 SQL 修改为:
select
*
from
shipmentlist,shipmentscrib
where
(shipmentlist.shipmentlistno=shipmentscrib.shipmentlistno)
and shipmentlist.shipmentdate = DATE_SUB ( DATE_ADD( LAST_DAY(NOW()) INTERVAL 1 DAY ) INTERVAL 2 MONTH )
AND shipmentlist.shipmentdate DATE_ADD( LAST_DAY(NOW()) INTERVAL 1 DAY )
ORDER BY shipmentdate DESC
1、新建一个test数据库,在数据库里创建一张data数据表。
2、在表内插入5条测试数据。
3、新建一个php文件,命名为test.php。
4、在test.php文件内,使用header()方法设置文件执行的编码为utf8,避免输出中文时产生乱码。
5、在test.php文件内,使用数据库账号、密码、名称,利用mysqli创建数据库连接,并使用set_charset()方法设置获得数据的编码为utf8。
6、在test.php文件内,编写sql语句,使用TO_DAYS()分别获得当前的天数和数据表ctime字段数据的天数,两者之差小于3天,即前三天,以此为条件查询data数据表的数据,使用query()执行sql语句,同时使用fetch_all()方法将获得的数据资源转换为二维数组。
7、在test.php文件内,使用foreach方法遍历上一步获得的二维数组,输出数据的id和姓名。
8、在浏览器运行test.php文件,查看程序执行的结果,可见,成功从数据库获得前三天的数据。