MySql查询日周月

常用计算日期的函数

日
date(日期) = CURDATE()
自然周
YEARWEEK(date_format(日期,'%Y-%m-%d') , 1) = YEARWEEK(now() , 1)
月
DATE_FORMAT( 日期,  '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

计算周的原理

MySql计算周的函数有两个,一个是YEARWEEK(date, mode)一个是WEEK(date, mode)

他们的原理都是通过计算当前日期是属于一年中的第几周,通过年的天数/7得出一年有多少周
在通过传入得日期得出当前得日期属于第几周

mode参数得作用是用于确认周的计算逻辑,是从周日开始还是周一开始,默认会使用系统的default_week_format

SHOW VARIABLES LIKE 'default_week_format';
返回的是0
0是从周日开始计算的,如果需要从周一开始计算,传1即可

两个函数都是返回日期对应得周数,区别在于YEARWEEK()会把年份也返回,显然用YEARWEEK更符合查询一个自然周数据的逻辑

SELECT WEEK('2022-04-18',1)
返回16
SELECT YEARWEEK('2022-04-18',1)
返回202216
posted @ 2022-04-18 14:56  阿弱  阅读(651)  评论(0编辑  收藏  举报