mysql生成(月初、月末、上中下旬判断、年初、年末、季初、季末)创建日期维度表所需字段内容、函数、及说明

逻辑字段名称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年中第几季度
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值