在数据分析中,经常需要对日期和时间进行格式化处理,以便更直观地展示和理解数据。
MySQL 5.7提供了强大的DATE_FORMAT
函数,允许用户根据特定的格式字符串来显示日期和时间。
Week函数
最直接的是使用YEAR
、WEEK
函数
SELECT
YEAR(NOW()) AS CurrentYear,
WEEK(NOW(),1) AS CurrentWeek # 从周一开始
上述查询将返回两个列CurrentYear
和CurrentWeek
,分别表示当前日期的年份和周数。然而,这个查询并没有以“年-周”的格式来显示结果。为了得到这种格式,我们需要使用一个额外的步骤来将这两个值合并成一个格式化的字符串。
date_format函数
更加直接的是直接使用格式化函数date_format
SELECT DATE_FORMAT(NOW(), '%X-%V') AS WeekNumber;
可以直接得到结果并格式化
%v
与%V
的区别
在DATE_FORMAT
函数中,%v
和%V
是两个不同的格式化参数,它们用于表示星期几和一年中的周数。
-
%v
:这个格式化选项表示星期中的天数(从星期日开始,星期日为1)。使用 %v 时,它会返回一个数字,范围从1到7,其中1代表星期日,2代表星期一,依此类推,直到7代表星期六。 -
%V
:这个格式化选项表示一年中的第几周(使用ISO 8601标准,周的开始是星期一)。%V
会返回一个数字,表示当前日期是一年中的第几周。如果新年的第一天是星期一、星期二还是星期日,这会影响一年的第一周是哪些天。在 ISO 8601标准中,如果新年的第一天是星期一或星期二,则该周是第一周;如果新年的第一天是星期三、星期四或星期五,则第一周可能包含上一年的几天;如果新年的第一天是星期六或星期日,则第一周可能完全是上一年的日子。