Post

mysql获取时间临时表

/ 学无止境

本文提供了两个MySQL时间查询示例:第一个查询用于生成指定时间区间内的所有日期,通过mysql.help_topic表的help_topic_id作为递增天数参数,结合date_add函数从起始日期开始逐日生成,利用datediff计算区间天数差确保覆盖完整日期范围,最终按help_topic_id排序输出日期序列。第二个查询用于获取当天内所有时段,通过变量@i实现小时数递减,使用DATE_SUB将当前日期格式化为年-月-日后减去@i小时,生成每1小时一个时段的时间点,通过交叉连接生成足够行数以覆盖全天时段,最终输出格式化的日期时间字符串。两查询分别解决了日期区间生成和时段细分的时间数据处理需求。

1、获取指定时间区间内的所有日期

SELECT
	date_add( '2022-04-01', INTERVAL ( cast( help_topic_id AS signed INTEGER )) DAY ) day 
FROM
	mysql.help_topic 
WHERE
	help_topic_id < datediff( '2022-05-01', '2022-04-01' ) + 1 
ORDER BY
	help_topic_id

2、获取当天内所有时段

SELECT DATE_FORMAT( DATE_SUB( DATE_FORMAT( NOW(), '%Y-%m-%d' ), INTERVAL (-( @i := @i + 1 )) HOUR 
		),
	'%Y-%m-%d %H' 
) AS 'time' 
FROM
	(
	SELECT
		a 
	FROM
		( SELECT '1' AS a UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' ) AS a
		JOIN ( SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' ) AS b ON 1 
	) AS b,
	( SELECT @i := - 1 ) AS i

评论