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
评论