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
    评论
要在MySQL中创建一个以时间为x的坐标,你可以按照以下步骤进行: 1. 创建一个存储坐标点的表。你可以使用以下语句创建一个包含`id`、`timestamp`和`y`列的表: ```sql CREATE TABLE coordinates ( id INT AUTO_INCREMENT PRIMARY KEY, timestamp DATETIME, y FLOAT ); ``` 在这个例子中,我们创建了一个名为`coordinates`的表,它包含一个自增的`id`作为主键,一个`timestamp`列用于存储时间戳,以及一个`y`列用于存储y坐标值。 2. 插入坐标点数据。你可以使用`INSERT INTO`语句将坐标数据插入到表中。例如: ```sql INSERT INTO coordinates (timestamp, y) VALUES ('2022-01-01 12:00:00', 4.56); INSERT INTO coordinates (timestamp, y) VALUES ('2022-01-02 14:30:00', 2.34); ``` 这将插入两个坐标点,分别是时间戳为`2022-01-01 12:00:00`和y值为4.56的点,以及时间戳为`2022-01-02 14:30:00`和y值为2.34的点。 3. 查询坐标点数据。你可以使用`SELECT`语句来查询坐标点数据。例如: ```sql SELECT * FROM coordinates; ``` 这将返回`coordinates`表中所有的坐标点数据,包括时间戳和y值。 4. 根据时间进行排序和筛选。你可以使用`ORDER BY`和`WHERE`子句来根据时间进行排序和筛选。例如,要按时间升序排序: ```sql SELECT * FROM coordinates ORDER BY timestamp ASC; ``` 要筛选特定时间范围内的坐标点: ```sql SELECT * FROM coordinates WHERE timestamp >= '2022-01-01' AND timestamp <= '2022-01-02'; ``` 这是在MySQL中创建以时间为x的基本步骤。你可以根据需要扩展和修改它。希望对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值