前言:只有亲手实战过,面试才能有底气不是吗,下面开始进行填充炮弹;
正菜:在工作中有天下午有个女同事是关于提取数据的一个需求,她说她跑了1个小时,数据库都卡死了,跑来让我把她这条SQL跑一下,我一看没写DATE_FORMAT,别急我把他原SQL贴上来。。这时我连忙想到坏了是没写函数把,果然是,怪不得系统跑蹦,挂掉。。。
2、经我一番修改后的原SQL:
SELECT phone_number,act_id,coupon_id,province_code,start_date,end_date FROM tf_acc_coupon WHERE coupon_id IN
(‘1000000000070223’,‘1000000000023201’) and DATE_FORMAT(end_date,’%Y%m%d’) >DATE_FORMAT(now(),’%Y%m%d’) LIMIT 1,100;
3、特此今天把学习得一些关于时间的函数整理一下,所以经历此事在一般要用时间字段时,先看下数据库的时间格式是那种,在下手去操作,不然有大问题。我们数据库使用的时间格式是第一种。。
SELECT DATE_FORMAT(now(),’%Y%m%d’) AS 北京时间
SELECT DATE_FORMAT(now(),’%Y%-%m%-%d’) as 时间
备注:
1、定义和用法:
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
date 参数是合法的日期。
format 规定日期/时间的输出格式。
%Y:年,4 位
%y:年,2 位
2、H 和 h输出的说明:
Date_FORMAT 中如果采用大写的H,则会输出24小时制的时间信息;
Date_FORMAT 中如果采用小写的h,则会输出12小时制的时间信息;
3、输出指定时间日期的格式:
SELECT DATE_FORMAT(‘2012-08-08 17:27:08’,’%Y-%m-%d %h:%i:%s’) as 时间;
4、输出现在时间日期的格式:
select date_format(now(),’%Y-%c-%d %h:%i:%s’);
5、 获取前两天的时间日期的格式:
SELECT DATE_sub(NOW(),INTERVAL 14 day) AS 时间