Mysql按周,周起始日期,结束日期,时差

本文详细解析了SQL中的日期时间函数(如DATE_FORMAT、TIMESTAMPDIFF)及日期格式化方法(如DATE_FORMAT),并通过实例展示了如何使用这些功能进行日期计算和格式输出。
SELECT subdate(applyDate,date_format(applyDate,'%w')) weekStart,
       subdate(applyDate,date_format(applyDate,'%w')-6) weekEnd,
       DATE_FORMAT(applyDate,'%Y%u') weeks,
       sum(TIMESTAMPDIFF(MINUTE,startTime,endTime)) time,
       sum(endMileage-startMileage) mile from car_apply 
WHERE applyDate BETWEEN '2013-05-01' AND '2013-05-10'
AND proposer='小三' 
GROUP BY weeks


SELECT TIMESTAMPDIFF(SECOND, now(), '2011-01-27 15:52:11')
语法为:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR。


知识关键词:DATE_FORMAT 

select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count 
from tc_case group by weeks;
select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count 
from tc_case group by days;
select DATE_FORMAT(create_time,'%Y%m') months,count(caseid) count 
from tc_case group by months;
DATE_FORMAT(date,format);

根据format字符串格式化date值。下列修饰符可以被用在format字符串中: 
%M 月名字(January……December) 
%W 星期名字(Sunday……Saturday) 
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) 
%Y 年, 数字, 4 位   www.2cto.com  
%y 年, 数字, 2 位 
%a 缩写的星期名字(Sun……Sat) 
%d 月份中的天数, 数字(00……31) 
%e 月份中的天数, 数字(0……31) 
%m 月, 数字(01……12) 
%c 月, 数字(1……12) 
%b 缩写的月份名字(Jan……Dec) 
%j 一年中的天数(001……366) 
%H 小时(00……23) 
%k 小时(0……23) 
%h 小时(01……12) 
%I 小时(01……12) 
%l 小时(1……12) 
%i 分钟, 数字(00……59) 
%r 时间,12 小时(hh:mm:ss [AP]M) 
%T 时间,24 小时(hh:mm:ss) 
%S 秒(00……59) 
%s 秒(00……59) 
%p AM或PM 
%w 一个星期中的天数(0=Sunday ……6=Saturday ) 
%U 星期(0……52), 这里星期天是星期的第一天 
%u 星期(0……52), 这里星期一是星期的第一天 
%% 一个文字“%”。


select subdate(curdate(),date_format(curdate(),'%w')-1)//获取当前日期在本周的周一
select subdate(curdate(),date_format(curdate(),'%w')-7)//获取当前日期在本周的周日


date_format是一个日期转换函数

date_format(curdate(),'%w')表示当前日期到上周周日共有几天的间隔,即当前日期减去上周周日的日期=天数(例:curdate()为2011-01-11,那么上周周日为2011-01-09,两者相减为2)所以若单独输出这一句:select date_format(curdate(),'%w') 结果就是2

在mysql api里对于subdate函数是这样解释的:
SELECT SUBDATE(NOW( ), 1) AS 'Yesterday',
SUBDATE(NOW( ), INTERVAL -1 DAY) AS 'Tomorrow';
正值为昨天,负值为明天,当前时间的起点,就是当前时间的上周周日


http://gxg353.i.sohu.com/blog/view/168463247.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值