表 account
字段 one=完成或未完成 two=完成时间 完成时间格式为2015-03-07 10:50:03
现在想根据编辑框的内容查询前几天完成的数据 例如今天为3月23日编辑框的内容为2那么点击查询获得不算今天的3月22日与3月21日完成的数据,编辑框的内容有可能是30或50总之不确定多少日 求大神赐教
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文件,查看程序执行的结果,可见,成功从数据库获得前三天的数据。
这位大哥貌似有点复杂 可否详细解释下 让小弟学习学习
追答select * from account where one='完成'
这段肯定能明白吧,我重点说说后面那段,假设编辑框的内容为‘2’,那么:
dateadd(dd,-1*convert(int,‘2’),getdate())
就是取当前日期前2天的日期值,但这个日期值是带有时间的,如果当前日期是‘2015-03-23 20:30:00'的话,那么上面函数得出的日期值就是‘2015-03-21 20:30:00'
而外面这段dateadd(dd,datediff(dd,0,。。。),0)是用来去掉时间的,执行后得到的值为‘2015-03-21 00:00:00'
最后的two<dateadd(dd,datediff(dd,0,getdate()),0)跟上面一样的原理,是用来求当前日期零点时的值’2015-03-23 00:00:00‘
这么复杂的话 会不会查寻起来太慢啊 还有 convert(int,‘2’) 不是很明白 int是?
亲 您这个运行不了 语句有问题
哥我是新手不是很明白 可否解释下
追答select date_add('2008-08-08 08:00:00', interval 5 day); -- 2008-08-13 08:00:00