Sql server 需要更改以下代码以获取上月第一天(2016年7月1日)和当月第一天(2106年8月1日)
需要更改以下代码才能获得上月第一天(2016年7月1日)和当前日期的第一天:Sql server 需要更改以下代码以获取上月第一天(2016年7月1日)和当月第一天(2106年8月1日),sql-server,tsql,Sql Server,Tsql,需要更改以下代码才能获得上月第一天(2016年7月1日)和当前日期的第一天: DECLARE @StartDate as Date = (SELECT cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date)) DECLARE @EndDate as Date = (SELECT dateadd(M,1,cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date))) D
DECLARE @StartDate as Date = (SELECT cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date))
DECLARE @EndDate as Date = (SELECT dateadd(M,1,cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date)))
DECLARE @EndDate2 as Date = (SELECT cast(getdate() as date))
首先获取当前月份的第一个日期,然后使用该值获取前一个月的第一个日期:
DECLARE @Current DATE = CAST(DATEADD(MM,DATEDIFF(MM,0,GETDATE()),0) AS DATE)
DECLARE @Prior DATE = CAST(DATEADD(MM,-1,@Current) AS DATE)
将代码中的前两行更改为:
DECLARE @StartDate as Date = (SELECT cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date))
DECLARE @EndDate as Date = (SELECT dateadd(M,1,cast(Dateadd(D, -(day(getdate()) - 1), getdate()) as date)))
致:
说明:
DATEDIFF(mm,0,getdate()),0)
获取历元和当前日期之间的月差DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
只需将这些月数再次添加回历元。确实尝试了上述操作,但出现以下错误:必须声明标量变量“@Current”。Msg 137,级别15,状态2,第40行必须声明标量变量“@EndDate”。您的代码中还有其他错误导致了这种情况。发布代码的其余部分。尝试了上述操作,但得到的quesr值不正确。我的激活日期似乎是空白的,这不应该是因为你问的问题,我已经将当前和前几个月的第一个日期输入到@StartDate
和@EndDate
。如果它仍然没有给你想要的输出,你可能应该提出另一个问题。您在WPYUSData.sdldim.Partners
和WPYUSData.sdldim.merchannels
中是否有在所需日期范围内的有效数据?是的,您提到的两个表中都有有效数据。如果您要从7月1日开始并在8月1日之前提取所有数据,您需要分解查询。首先NULLIF(ISNULL(Signing_Date,'9999-01-01'),'9999-01-01')
与使用Signing_Date
相同。其次,从WPYUSData.sdldim.Partners运行查询select*,其中Partners_Category='Strategic Partners'和p.Signing_Date介于'01-Jul-2016'和'01-Aug-2016'
之间,并告诉我它是否返回了任何内容。嘿,代码工作正常,我只需交换DECLARE@StartDate=(选择DATEADD(mm,DATEDIFF(mm,0,getdate())-1,0));使用适当的软件(MySQL、Oracle、DB2等)和版本(例如,sql-server-2014
)标记数据库问题很有帮助。语法和特征的差异通常会影响答案。
DECLARE @StartDate as Date = (SELECT DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0));
DECLARE @EndDate as Date = (SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0));