1. 首页
  2. 技术知识

Mysql时间轴数据 获取同一天数据的前X

创建表数据

CREATE TABLE `praise_info` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,

`pic_id` varchar(64) DEFAULT NULL COMMENT ‘图片ID’,

`created_time` datetime DEFAULT CURRENT_TIMESТAMP COMMENT ‘创建时间’,

PRIMARY KEY (`id`),

KEY `pic_id` (`pic_id`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=3647 DEFAULT CHARSET=utf8 COMMENT=’图片表’;
  添加数据省略

  时间轴前2条数据

SELECT * FROM

(

SELECT *, @num := if(@created_time = DATE_FORMAT(created_time, ‘%Y-%m-%d’), @num := @num + 1, 1) as row_num,

@created_time := DATE_FORMAT(created_time, ‘%Y-%m-%d’) as axisTime FROM praise_info

order by id desc

) AS temp

WHERE row_num < 3;
ps:下面看下MySQL 生成 时间轴

DROP PROCEDURE IF EXISTS pro_dim_date;

tudou@Gyyx

CREATE PROCEDURE pro_dim_date(IN bdate DATE,IN edate DATE)

BEGIN

DECLARE var DATE DEFAULT bdate;

DECLARE evar DATE DEFAULT DATE_ADD(edate,INTERVAL 1 DAY);

DECLARE bweek DATE;

DECLARE eweek DATE;

WHILE var<evar DO

SET bweek = DATE_ADD(DATE_SUB(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);

SET eweek = DATE_SUB(DATE_ADD(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);

INSERT INTO gyyx_report.dim_date

(

`date_id`,

`date_name`,

`date_of_month`,

`year_id`,

`year_name`,

`quarter_id`,

`quarter_name`,

`month_id`,

`month_name`,

`month_of_year_name`,

`month_of_year_id`,

`week_id`,

`week_name`,

`week_of_year_id`,

`week_of_year_name`,

`is_weekend`

)

VALUES

(

DATE_FORMAT(var,’%Y%m%d’),

DATE_FORMAT(var,’%Y-%m-%d’),

DAYOFMONTH(var),

YEAR(var),

CONCAT(YEAR(var),’年’),

QUARTER(var),

CONCAT(QUARTER(var),’季度’),

DATE_FORMAT(var,’%Y%m’),

CONCAT(YEAR(var),’年’,MONTH(var),’月’),

CONCAT(MONTH(var),’月’),

MONTH(var),

WEEKDAY(var),

CASE WEEKDAY(var) WHEN 0 THEN ‘星期一’ WHEN 1 THEN ‘星期二’ WHEN 2 THEN ‘星期三’ WHEN 3 THEN ‘星期四’ WHEN 4 THEN ‘星期五’ WHEN 5 THEN ‘星期六’ WHEN 6 THEN ‘星期日’ END,

WEEKOFYEAR(var),

CONCAT(‘第’,WEEKOFYEAR(var),’周(‘,MONTH(bweek),’月’,DAY(bweek),’日~’,MONTH(eweek),’月’,DAY(eweek),’日’),

CASE WHEN WEEKDAY(var)>4 THEN ‘是’ ELSE ‘否’ END

);

SET var=DATE_ADD(var,INTERVAL 1 DAY);

END WHILE;

END调用:

CALL pro_dim_date(‘2005-01-01′,’2022-12-31’)结果:

20221217  2022-12-17 17 2022  2022年  4  4季度 202212 2022年12月  12月 12 1  星期二 51 第51周(12月11日~12月23日 否

20221218  2022-12-18 18 2022  2022年  4  4季度 202212 2022年12月  12月 12 2  星期三 51 第51周(12月12日~12月24日 否

20221219  2022-12-19 19 2022  2022年  4  4季度 202212 2022年12月  12月 12 3  星期四 51 第51周(12月13日~12月25日 否

20221220  2022-12-20 20 2022  2022年  4  4季度 202212 2022年12月  12月 12 4  星期五 51 第51周(12月14日~12月26日 否

20221221  2022-12-21 21 2022  2022年  4  4季度 202212 2022年12月  12月 12 5  星期六 51 第51周(12月15日~12月27日 是

20221222  2022-12-22 22 2022  2022年  4  4季度 202212 2022年12月  12月 12 6  星期日 51 第51周(12月16日~12月28日 是

20221223  2022-12-23 23 2022  2022年  4  4季度 202212 2022年12月  12月 12 0  星期一 52 第52周(12月17日~12月29日 否

20221224  2022-12-24 24 2022  2022年  4  4季度 202212 2022年12月  12月 12 1  星期二 52 第52周(12月18日~12月30日 否

20221225  2022-12-25 25 2022  2022年  4  4季度 202212 2022年12月  12月 12 2  星期三 52 第52周(12月19日~12月31日 否

20221226  2022-12-26 26 2022  2022年  4  4季度 202212 2022年12月  12月 12 3  星期四 52 第52周(12月20日~1月1日  否

20221227  2022-12-27 27 2022  2022年  4  4季度 202212 2022年12月  12月 12 4  星期五 52 第52周(12月21日~1月2日  否

20221228  2022-12-28 28 2022  2022年  4  4季度 202212 2022年12月  12月 12 5  星期六 52 第52周(12月22日~1月3日  是

20221229  2022-12-29 29 2022  2022年  4  4季度 202212 2022年12月  12月 12 6  星期日 52 第52周(12月23日~1月4日  是表结构:

CREATE TABLE `dim_date` (

  `date_id` int(11) NOT NULL COMMENT ‘20110512’,

  `date_name` varchar(16) DEFAULT NULL COMMENT ‘2011-05-12’,

  `date_of_month` int(11) DEFAULT NULL COMMENT ’12’,

  `year_id` int(11) DEFAULT NULL COMMENT ‘2011’,

  `year_name` varchar(16) DEFAULT NULL COMMENT ‘2011年’,

  `quarter_id` int(11) DEFAULT NULL COMMENT ‘2’,

  `quarter_name` varchar(16) DEFAULT NULL COMMENT ‘2季度’,

  `month_id` int(11) DEFAULT NULL COMMENT ‘5’,

  `month_name` varchar(16) DEFAULT NULL COMMENT ‘5月’,

  `month_of_year_name` varchar(16) DEFAULT NULL COMMENT ‘2011年5月’,

  `month_of_year_id` int(11) DEFAULT NULL COMMENT ‘201105’,

  `week_id` int(11) DEFAULT NULL,

  `week_name` varchar(16) DEFAULT NULL,

  `week_of_year_id` int(11) DEFAULT NULL,

  `week_of_year_name` varchar(32) DEFAULT NULL,

  `is_weekend` enum(‘否’,’是’) DEFAULT NULL COMMENT ‘是否周末’,

  PRIMARY KEY (`date_id`),

  KEY `ix_dim_date_date_name` (`date_name`),

  KEY `ix_dim_date_month_id` (`month_id`),

  KEY `ix_dim_date_year_id` (`year_id`),

  KEY `ix_dim_date_quanter_id` (`quarter_id`),

  KEY `ix_dim_date_week_of_year_id` (`week_of_year_id`,`week_of_year_name`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1
总结

以上所述是小编给大家介绍的Mysql时间轴数据 获取同一天数据的前X,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对共生网络网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/115800.html

联系我们