Mysql生成当月(指定月)所有天数 本周所有日期 当日24小时

Mysql生成当月(指定月)所有天数 本周所有日期 当日24小时

  1. 生成当月所有天数
SELECT
	date_format(
		date_add( DATE_ADD( curdate(), INTERVAL - DAY ( curdate())+ 1 DAY ), INTERVAL ( cast( help_topic_id AS signed INTEGER ) + 0 ) DAY ),
		'%Y-%m-%d' 
	) 日期 
FROM
	mysql.help_topic 
WHERE
	help_topic_id < DAY (
		last_day(
		DATE_ADD( curdate(), INTERVAL - DAY ( curdate())+ 1 DAY ))) 
ORDER BY
	help_topic_id;

在这里插入图片描述

  1. 生成指定月份所有天数
select date_format(date_add('2022-02-01', interval(cast(help_topic_id as signed integer)+ 0) day),'%Y-%m-%d') 日期
from mysql.help_topic
where help_topic_id  < day(last_day('2022-02-01'))
order by help_topic_id;

在这里插入图片描述
3. 生成当月第一天

select DATE_ADD(curdate(),interval -day(curdate())+1 day) as time 

在这里插入图片描述

  1. 生成本周的日期
SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 0 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 1 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 2 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 3 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 4 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 5 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 6 DAY) as days ORDER BY days asc

在这里插入图片描述

  1. 生成本周日期带中文
SELECT CASE b.week
	WHEN 1 THEN '星期一'
	WHEN 2 THEN '星期二'
	WHEN 3 THEN '星期三'
	WHEN 4 THEN '星期四'
	WHEN 5 THEN '星期五'
	WHEN 6 THEN '星期六'
	ELSE
		'星期日'
END as week,b.days FROM(SELECT (@i:=@i+1) week,a.* FROM (select @i:=0) as t,(SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 0 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 1 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 2 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 3 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 4 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 5 DAY) as days
UNION ALL SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 6 DAY) as days ORDER BY days asc ) as a)as b

在这里插入图片描述

  1. 生成本周第一天
SELECT  DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 0 DAY) as days

在这里插入图片描述

  1. 生成24小时
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

在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 MySQL 的内置函数来生成本月的所有日期: ``` SELECT DATE_ADD('2023-02-01', INTERVAL n DAY) FROM ( SELECT a.N + b.N * 10 + c.N * 100 AS n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c ) d WHERE n <= DAY(LAST_DAY('2023-02-01')) ``` 在上面的代码中,将日期'2023-02-01'作为起点,然后使用DATE_ADD函数在这个起点上加上间隔天数 n。 n 的值是通过一个子查询生成的,该子查询生成了所有从0到999的数字。然后,通过限制 n 的值小于等于本月最后一天,从而限制生成日期在本月内。 ### 回答2: 在MySQL生成本月的所有日期可以通过以下步骤实现: 1. 首先,你需要创建一个日期表来存储所有的日期数据。可以使用如下的SQL语句创建一个名为dates的表: ``` CREATE TABLE dates ( date DATE ); ``` 2. 接下来,你可以通过使用MySQL日期和时间函数来生成本月的日期数据,并将其插入到dates表中。可以使用如下的SQL语句来执行: ``` INSERT INTO dates (date) SELECT DATE(NOW() - INTERVAL (DAY(NOW())-1) DAY + INTERVAL (t4*1000 + t3*100 + t2*10 + t1) DAY) FROM (SELECT 0 t1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1, (SELECT 0 t2 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2, (SELECT 0 t3 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3, (SELECT 0 t4 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4 WHERE DATE(NOW() - INTERVAL (DAY(NOW())-1) DAY + INTERVAL (t4*1000 + t3*100 + t2*10 + t1) DAY) < DATE(NOW() + INTERVAL 1 MONTH - INTERVAL DAY(NOW() + INTERVAL 1 MONTH) DAY); ``` 执行上述SQL语句后,dates表将包含本月的所有日期数据。 3. 最后,你可以通过查询dates表来获取生成的本月所有日期数据。可以使用如下的SQL语句来执行: ``` SELECT date FROM dates; ``` 执行上述SQL语句后,将返回本月的所有日期数据。 以上就是使用MySQL生成本月的所有日期的方法。 ### 回答3: 要用MySQL生成本月的所有日期,可以使用以下步骤: 1. 首先,创建一个包含所有日期的临时表。可以使用CREATE TABLE语句创建一个名为temp_dates的表,有一个名为date_column的列来存储日期。例如: CREATE TABLE temp_dates ( date_column DATE ); 2. 接下来,使用INSERT INTO语句将本月的所有日期插入临时表。可以使用一个循环,从本月的第一天到最后一天,逐个插入日期。例如: SET @start_date := DATE_FORMAT(NOW(), '%Y-%m-01'); SET @end_date := LAST_DAY(@start_date); WHILE @start_date <= @end_date DO INSERT INTO temp_dates (date_column) VALUES (@start_date); SET @start_date := DATE_ADD(@start_date, INTERVAL 1 DAY); END WHILE; 3. 最后,从临时表中选择所有日期。可以使用SELECT语句从temp_dates表中选择所有的date_column值。例如: SELECT date_column FROM temp_dates; 这样,你就可以使用MySQL生成本月的所有日期。记得在完成后删除临时表,以防止数据冗余。可以使用DROP TABLE语句删除temp_dates表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值