在我的数据库中,我有一个列,'Transaction Date'和datetime数据类型.例如,'2011-05-31 00:00:00.000'.我想通过选择数据来创建SQL查询,其中"交易日期"列日期是@InputDate之前的一个月.
我尝试过...
DATEADD(MONTH,-1,@ InputDate)并返回'30 -May-2011',这不是我想要的!
我希望价值回报永远是本月的最后一天,如'31-May-2011'
使用以下脚本:
上个月的最后一天:
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)