SQL 获取当前日期上一个月的日期

本文介绍如何使用SQL获取当前日期上一个月的日期,并展示如何格式化日期。这些技巧对于日常数据库管理和查询非常实用。

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

获取当前日期上一个月的日期:

SELECT DATE_ADD(NOW(),INTERVAL -1 MONTH)


SQL 中格式化日期

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S')



### 使用SQL获取一个月日期 为了获得当前日期所在月份的前一个月的第一天和最后一天,在SQL中有多种方法可以实现这一目标。下面提供了一种通用的方法来计算给定日期参数所指月份之前的一个月: ```sql DECLARE @CurrentDate datetime; SET @CurrentDate = GETDATE(); -- 获取当前系统时间作为例子中的@CurrentDate变量值。 -- 计算上个月第一天 SELECT DATEADD(month, DATEDIFF(month, 0, @CurrentDate) - 1, 0) AS 'FirstDayOfLastMonth'; -- 计算上个月最后一天 SELECT EOMONTH(DATEADD(month, DATEDIFF(month, 0, @CurrentDate) - 1, 0)) AS 'LastDayOfLastMonth'; ``` 上述脚本首先通过`DATEDIFF`函数确定自零点(即数据库内部表示法中的起始时刻)到指定日期之间的月份数差,接着减去1得到前一月对应的数值;再利用`DATEADD`函数返回该月的第一天[^4]。对于求解上个月的最后一天,则是在此基础上应用了`EOMONTH`函数以找到对应月份的最后一日[^2]。 此外,如果只需要简单地取得相对于今天而言的上个月某固定日子(比如每个月相同的那一天),也可以采用如下方式: ```sql -- 假设要找的是每月固定的第15号 DECLARE @SpecificDay int = 15; WITH LastMonthDates (YearMonth, SpecificDay) AS ( SELECT YEAR(DATEADD(MONTH,-1,@CurrentDate))*100+MONTH(DATEADD(MONTH,-1,@CurrentDate)), CASE WHEN DAY(EOMONTH(DATEADD(MONTH,-1,@CurrentDate))) >= @SpecificDay THEN @SpecificDay ELSE DAY(EOMONTH(DATEADD(MONTH,-1,@CurrentDate))) END ) SELECT CAST(YearMonth / 100 AS varchar)+'-'+RIGHT('0'+CAST(YearMonth % 100 AS varchar),2)+'-'+RIGHT('0'+CAST(SpecificDay AS varchar),2) AS FormattedDate, DATEFROMPARTS(YearMonth / 100, YearMonth % 100, SpecificDay) AS DateValue FROM LastMonthDates; ``` 这段代码构建了一个CTE表达式用于处理可能存在的特殊情况——当请求的具体日期超过了实际存在最大日期时自动调整为月末[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值