获取一个月前的日期,它始终是该月的最后一天

Fir*_*and 1 t-sql sql-server

在我的数据库中,我有一个列,'Transaction Date'和datetime数据类型.例如,'2011-05-31 00:00:00.000'.我想通过选择数据来创建SQL查询,其中"交易日期"列日期是@InputDate之前的一个月.

我尝试过...
DATEADD(MONTH,-1,@ InputDate)并返回'30 -May-2011',这不是我想要的!
我希望价值回报永远是本月的最后一天,如'31-May-2011'

Abd*_*man 7

使用以下脚本:

上个月的最后一天:

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) LastDay_PreviousMonth
Run Code Online (Sandbox Code Playgroud)

本月最后一天:

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)) LastDay_CurrentMonth
Run Code Online (Sandbox Code Playgroud)

下个月的最后一天:

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0)) LastDay_NextMonth
Run Code Online (Sandbox Code Playgroud)

任何月份和年份的最后一天:

DECLARE @dtDate DATETIME
SET @dtDate = '8/18/2007'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
LastDay_AnyMonth
Run Code Online (Sandbox Code Playgroud)