mysql根据时间格式生成x轴

步骤

1、根据日期范围遍历生成每天日期的view

其中a,b,c,d分别为个十百千的位数,下面是一个生成一个 个十百千的0到9的一个笛卡尔积
结果为9999/365≈27 一个时间为前22年到后5年的一个时间范围日期

create or replace
algorithm = UNDEFINED view `date_range_view` as
select
    ((curdate() + interval 5 year) - interval (((`a`.`a` + (10 * `b`.`a`)) + (100 * `c`.`a`)) + (1000 * `d`.`a`)) day) as `Date`
from
    (((((
    select
        0 as `a`)
union all
select
    1 as `1`
union all
select
    2 as `2`
union all
select
    3 as `3`
union all
select
    4 as `4`
union all
select
    5 as `5`
union all
select
    6 as `6`
union all
select
    7 as `7`
union all
select
    8 as `8`
union all
select
    9 as `9`) `a`
join (
    select
        0 as `a`
union all
    select
        1 as `1`
union all
    select
        2 as `2`
union all
    select
        3 as `3`
union all
    select
        4 as `4`
union all
    select
        5 as `5`
union all
    select
        6 as `6`
union all
    select
        7 as `7`
union all
    select
        8 as `8`
union all
    select
        9 as `9`) `b`)
join (
    select
        0 as `a`
union all
    select
        1 as `1`
union all
    select
        2 as `2`
union all
    select
        3 as `3`
union all
    select
        4 as `4`
union all
    select
        5 as `5`
union all
    select
        6 as `6`
union all
    select
        7 as `7`
union all
    select
        8 as `8`
union all
    select
        9 as `9`) `c`)
join (
    select
        0 as `a`
union all
    select
        1 as `1`
union all
    select
        2 as `2`
union all
    select
        3 as `3`
union all
    select
        4 as `4`
union all
    select
        5 as `5`
union all
    select
        6 as `6`
union all
    select
        7 as `7`
union all
    select
        8 as `8`
union all
    select
        9 as `9`) `d`);

在这里插入图片描述

2、根据日期格式拼接日期

SELECT
	T1.DATE_VALUE,
	T1 DATE_ALIAS,
	`其他需要展示的数据`
FROM
	(
	SELECT
		DATE_FORMAT(DATE, EMPTY(:DATE_TYPE, '%Y-%m')) DATE_VALUE,
		CASE WHEN EMPTY(:DATE_TYPE,
		'%Y-%m') = '%Y-%m-%d' THEN CONCAT(DATE_FORMAT(DATE, '%d'), '日')
		WHEN EMPTY(:DATE_TYPE,
		'%Y-%m') = '%x-%v' THEN CONCAT(DATE_FORMAT(DATE, '%v'), '周')
		ELSE CONCAT(DATE_FORMAT(DATE, '%c'), '月') END AS DATE_ALIAS
	FROM
		DATE_RANGE_VIEW
	WHERE
		1 = 1
		AND DATE_FORMAT(DATE, EMPTY(:DATE_TYPE, '%Y-%m')) BETWEEN DATE_FORMAT(EMPTY(:START_DATE, DATE_FORMAT(ADDDATE(LAST_DAY(ADDDATE(CURDATE() , INTERVAL -1 YEAR)), INTERVAL 1 DAY), '%Y-%m-%d')), EMPTY(:DATE_TYPE, '%Y-%m')) AND DATE_FORMAT(EMPTY(:END_DATE, DATE_FORMAT(LAST_DAY(CURDATE()), '%Y-%m-%d')), EMPTY(:DATE_TYPE, '%Y-%m'))
	GROUP BY
		DATE_FORMAT(DATE, EMPTY(:DATE_TYPE, '%Y-%m'))
	ORDER BY
		DATE_VALUE ) T1
LEFT JOIN (`需要串联的表` ) T2 ON
	T1.DATE_VALUE = T2.DATE_VALUE

在这里插入图片描述

3、获取时间所在的月的周

SET @d=NOW();
SELECT (DAY(@d)+WEEKDAY(@d-INTERVAL DAY(@d) DAY)) DIV 7 ;

在这里插入图片描述
https://blog.csdn.net/weixin_29384119/article/details/113688415 WEEKDAY函数解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值