sqlserver、mysql 获取当月的每一天,使用系统自带的表实现(有数据库访问权限的慎入)

本文详细介绍了在MySQL和SQL Server中如何获取当前月份的每一天。在MySQL中,利用curdate()、last_day()和date_add()函数;在SQL Server中,使用getdate()、convert()和DATEADD()函数。文章提供了相应的函数讲解和示例,帮助读者掌握这两个数据库系统的日期处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍 mysql 和 sqlserver 获取当月每一天的方法,以及用到的基本函数的讲解

 

  • MySQL:

mysql 获取当月每一天

SELECT
    @cdate := date_add(@cdate, INTERVAL - 1 DAY) AS days,
    @num := @num - 1 AS nowday
FROM
    mysql.help_keyword,
    (
        SELECT
            @cdate := date_add(
                last_day(curdate()),
                INTERVAL 1 DAY
            ),
            @num := (
                last_day(curdate()) - DATE_ADD(
                    curdate(),
                    INTERVAL - DAY (curdate()) + 1 DAY
                )
            ) + 2
    ) t1
WHERE
    help_keyword_id < DAY (last_day(curdate()))
ORDER BY days

输出:

思路:

要有一个数据记录在31条(月最大天数)以上的表,
这个表可以是自己union all 31天,也可以建一个只有一个字段的表,有31条记录就行

例子里用的是系统表,都有的,就是访问权限得注意,没设置权限的就不用管这么多了

函数介绍:

  1. 获取当前日期:select curdate()
  2. 获取月最后一天:select last_day(curdate())
  3. 日期加减(获取前一天): select date_add(curdate(), INTERVAL - 1 DAY)【正数就加,负数就减,最后的DAY是按天减,当天还可以按月减,按小时分钟减等等】

想了解更多的童鞋可以看这里:

https://blog.youkuaiyun.com/yuxiayiji/article/details/7480785

 

  • sql server 

sql server 获取当月没一天

SELECT
	number + 1
FROM
	master..spt_values
WHERE
	type = 'p'
AND DATEADD(
	DAY,
	number,
	CAST (
		CONVERT (VARCHAR(7), getdate(), 120) + '-01' AS datetime
	)
) < DATEADD(
	MONTH,
	1,
	CAST (
		CONVERT (VARCHAR(7), getdate(), 120) + '-01' AS datetime
	)
)

思路:

和上面思路一样。。

函数介绍:

  1. 获取当前日期(精确到了毫秒):select getdate()
  2. 转换日期格式:convert(varchar(7),getdate(),120)  【120代表只获取到年月,不获取日】
  3. 日期加减:DATEADD(datepart,number,date) 

具体方法参考:

https://blog.youkuaiyun.com/akxj2022/article/details/88887611

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值