MySQL中时间转换周的3种函数比较

一、week 不跨年

WEEK(date[,mode])函数
此函数返回日期的周数。双参数的形式WEEK()允许你指定星期是否开始于周日或周一,以及是否返回值应在范围从053或从153。 如果省略了mode参数,系统default_week_format变量的值被使用。

在这里插入图片描述

SELECT
	order_time,
	week( order_time) AS order_week 
FROM
	saleorder 
ORDER BY
	order_time

在这里插入图片描述
跨年周两年会分开统计,去年52周多余部门算作新一年0周

二、weekofyear

WEEKOFYEAR(date)

返回日期用数字表示的范围是从153的日历周。WEEKOFYEAR()是一个兼容性函数,它等效于WEEK(date,3)
MySQL 的 YEARWEEK 是获取年份和周数的一个函数,函数形式为 YEARWEEK(date[,mode])12010-3-14 ,礼拜天

SELECT YEARWEEK('2010-3-14') 返回 11
SELECT YEARWEEK('2010-3-14',1) 返回 10
SELECT
	order_time,
	WEEKOFYEAR( order_time) AS order_week 
FROM
	saleorder 
ORDER BY
	order_time

在这里插入图片描述
跨年周会显示正常的自然周

三、date_format(date,’%u’)

%U	周 (01-53) 星期日是一周的第一天
%u	周 (01-53) 星期一是一周的第一天

SELECT
	order_time,
	DATE_FORMAT( order_time, '%u' ) AS order_week 
FROM
	saleorder 
ORDER BY
	order_time

在这里插入图片描述
跨年周,上一年的日期为去年最后一周,本年日期为本年01周

发布了388 篇原创文章 · 获赞 71 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ZZQHELLO2018/article/details/103878562