SQL语句从一个给出的月份查出所有的日期

先上代码

SELECT
	ADDDATE( monthAndDay.FIRST, allMonth.d - 1 ) AS AttendanceDate 
FROM
	(
	SELECT
		1 AS d 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 UNION ALL
	SELECT
		10 UNION ALL
	SELECT
		11 UNION ALL
	SELECT
		12 UNION ALL
	SELECT
		13 UNION ALL
	SELECT
		14 UNION ALL
	SELECT
		15 UNION ALL
	SELECT
		16 UNION ALL
	SELECT
		17 UNION ALL
	SELECT
		18 UNION ALL
	SELECT
		19 UNION ALL
	SELECT
		20 UNION ALL
	SELECT
		21 UNION ALL
	SELECT
		22 UNION ALL
	SELECT
		23 UNION ALL
	SELECT
		24 UNION ALL
	SELECT
		25 UNION ALL
	SELECT
		26 UNION ALL
	SELECT
		27 UNION ALL
	SELECT
		28 UNION ALL
	SELECT
		29 UNION ALL
	SELECT
		30 UNION ALL
	SELECT
		31 
	) allMonth,
	( SELECT CONCAT( '2024-02', '-01' ) AS FIRST, DAY ( LAST_DAY( str_to_date( '2024-02', '%Y-%m' ))) AS lastday ) monthAndDay 
WHERE
	allMonth.d <= monthAndDay.lastday;
首先得建一个中间表,假设表名allMonth, 获得31行1-31的数字;

再建一张中间表 放指定月份第一天日期和最后一天序号(最后一天用LAST_DAY()函数查出), 比如假设这张表monthAndDay,  2024-02月最后一天是29号,这里值就是29。本代码示例中 monthAndDay 表的FIRST字段就是 '2024-02-01', last字段值就是 29。

最后用 ADDDATE( monthAndDay.FIRST, allMonth.d - 1 )得到此月所有日期,注意allMonth.d 是一个表,就查出符合条件的所有行。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值