逻辑字段名称 | Mysql生成函数及方法 | 返回数值 | 备注 |
自然日历日期 | select date(now()) | 2020/11/13 9:14 | 也可以手动输入"YYYY-MM-DD" |
周初标志 | select case when DAYOFWEEK(now()) =‘1’ then 1 else 0 end; | 1或0 | #获取一个日期是星期几(1=星期天,2=星期一…,7=星期六),如果是周天则标记为1,不是则为0 |
旬初标志 | select case DAYOFMONTH(now()) when ‘1’ then 1 when ‘11’ then 1 when ‘21’ then 1 else 0 end; | 1或0 | #获取一个日期是当月的第几天;一个月的上旬、中旬、下旬分别是指当月的1日–10日、11日–20日、21日—30日(31日),判断上旬<11,中旬>=11且<21,>=21下旬,二月较为特殊 |
月初标志 | select case DAYOFMONTH(now()) when ‘1’ then 1 else 0 end; | 1或0 | #获取一个日期是当月的第几天;返回1,标记为月初 |
季初标志 | select case date(now()) when concat(year(now()),’-01-01’) then 1 when concat(year(now()),’-04-01’) then 1 when concat(year(now()),’-07-01’) then 1 when concat(year(now()),’-10-01’) then 1 else 0 end; | 1或0 | 标记4个日期,‘xxxx-01-01’,‘xxxx-04-01’,‘xxxx-07-01’,‘xxxx-10-01’,为TRUE |
年初标志 | SELECT case DAYOFYEAR(now()) when ‘1’ then 1 else 0 end; | 1或0 | 当前日期与返回日期相等置为TRUE |
周末标志 | select case DAYOFWEEK(now()) when ‘7’ then 1 else 0 end; | 1或0 | #获取一个日期是星期几(1=星期天,2=星期一…,7=星期六),如果为7则标记为TRUE |
旬末标志 | select case DAYOFMONTH(now()) when ‘10’ then 1 when ‘20’ then 1 when DAYOFMONTH(LAST_DAY(now())) then 1 else 0 end; | 1或0 | #获取一个日期是当月的第几天;一个月的上旬、中旬、下旬分别是指当月的1日–10日、11日–20日、21日—30日(31日),判断上旬<11,中旬>=11且<21,>=21下旬,二月较为特殊 |
月末标志 | select case DAYOFMONTH(now()) when DAYOFMONTH(LAST_DAY(now())) then 1 else 0 end; | 1或0 | #当前month的最后一天:与当前日期相等,标记为月末 |
季末标志 | select case date(now()) when concat(year(now()),’-03-31’) then 1 when concat(year(now()),’-06-30’) then 1 when concat(year(now()),’-09-30’) then 1 when concat(year(now()),’-12-31’) then 1 else 0 end; | 1或0 | 当前日期等于返回日期,即为季末日期 |
年末标志 | select case date(now()) when concat(year(now()),’-12-31’) then 1 else 0 end; | 1或0 | 当前日期与‘YYYY-12-31’相等,即为年末 |
日历年月 | select concat(year(‘2020-09-10’),’-’,substr(‘2020-09-10’,6,2)); | 2020/9/1 | |
年初日期 | SELECT DATE_SUB(‘2020-11-11’,INTERVAL dayofyear(‘2020-11-11’)-1 DAY); | 2020/1/1 | |
季初日期 | select concat(year(‘2020-09-10’),’-’, case when (floor(substr(‘2020-09-10’,6,2)/3.1)*3)+1<10 then concat(0,(floor(substr(‘2020-09-10’,6,2)/3.1)*3)+1) else (floor(substr(‘2020-09-10’,6,2)/3.1)*3)+1 end,’-01’); | 2020/7/1 | 返回季初日期 |
月初日期 | SELECT concat(date_format(LAST_DAY(now()),’%Y-%m-’),‘01’); | 2020/11/1 | |
旬初日期 | select case when DAYOFMONTH(now())<11 then concat(substr(date(now()),1,8),‘01’) when 11<=DAYOFMONTH(now())<21 then concat(substr(date(now()),1,8),‘11’) when 21<=DAYOFMONTH(now()) then concat(substr(date(now()),1,8),‘21’) else 0 end; | 2020/11/11 | #获取一个日期是当月的第几天;一个月的上旬、中旬、下旬分别是指当月的1日–10日、11日–20日、21日—30日(31日),判断上旬<11,中旬>=11且<21,>=21下旬,二月较为特殊 |
周初日期 | select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY); | 2020/11/8 | #当前week的第一天: |
年末日期 | select concat(year(‘2020-09-10’),’-’,‘12-31’); | 2020/12/31 | #当前日期与‘YYYY-12-31’相等,即为年末 |
季末日期 | select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM ‘2020-07-02’),1) + interval QUARTER(‘2020-07-02’)*3-1 month); | 2020/9/30 | 当前日期等于返回日期,即为季末日期 |
月末日期 | SELECT LAST_DAY(now()); | 2020/11/30 | #当前month的最后一天:与当前日期相等,标记为月末 |
旬末日期 | select case when DAYOFMONTH(now())<11 then concat(substr(date(now()),1,8),‘10’) when 11<=DAYOFMONTH(now())<21 then concat(substr(date(now()),1,8),‘20’) when 21<=DAYOFMONTH(now()) then last_day(now()) else 0 end; | 2020/11/20 | #获取一个日期是当月的第几天;一个月的上旬、中旬、下旬分别是指当月的1日–10日、11日–20日、21日—30日(31日),判断上旬<11,中旬>=11且<21,>=21下旬,二月较为特殊 |
周末日期 | select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY); | 2020/11/14 | #当前week的最后一天: |
上年末日期 | select concat(year(date(date_add(now(),interval-1 year))),’-12-31’); | 2019/12/31 | |
上季末日期 | select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-4 month) | 2020/9/30 | 前一quarter的最后一天: |
上月末日期 | select last_day(date_sub(now(),interval 1 month)); | 2020/10/31 | 前一month的最后一天: |
上旬末日期 | select case when DAYOFMONTH(now())<11 then last_day(date_add(now(),interval-1 month)) when 11<=DAYOFMONTH(now())<21 then concat(substr(date(now()),1,8),‘10’) when 21<=DAYOFMONTH(now()) then concat(substr(date(now()),1,8),‘20’) else 0 end; | 2020/11/10 | #获取一个日期是当月的第几天;一个月的上旬、中旬、下旬分别是指当月的1日–10日、11日–20日、21日—30日(31日),判断上旬<11,中旬>=11且<21,>=21下旬,二月较为特殊 |
上周末日期 | select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY) | 2020/11/7 | 前一week的最后一天: |
年度 | select year(now()); | 2020 | |
季度 | select QUARTER(now()); | 4 | |
月份 | select MONTH(now()); | 11 | |
假期日期 | 根据假日办发布的假期日历进行标记 | ||
假期类型代码 | 周末或节假日 | 根据假日办发布的假期日历进行标记 | |
星期中第几天 | select DAYOFWEEK(now()); | 6 | #获取一个日期是星期几(1=星期天,2=星期一…,7=星期六) |
月中第几天 | select DAYOFMONTH(now()); | 13 | #获取一个日期是月中的第几天; |
年中第几天 | select DAYOFYEAR(now()); | 318 | #获取一个日期是当前年的第几天; |
年中第几星期 | select DATE_FORMAT(CURRENT_DATE(),’%v’); | 46 | 年中第几个星期 |
季度中第几月 | select concat(QUARTER(now()),’-’,case when MONTH(now()) in(1,4,7,10) then ‘1’ when MONTH(now()) in(2,5,8,11) then ‘2’ else ‘3’ end ); | 第X季度(-)第X月 | 季度中第几月 |
年中第几月 | select MONTH(now()); | 11 | 年中第几月 |
年中第几季度 | select QUARTER(date(now())); | 4 | 年中第几季度 |