Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 需要更改以下代码以获取上月第一天(2016年7月1日)和当月第一天(2106年8月1日)_Sql Server_Tsql - Fatal编程技术网

Sql server 需要更改以下代码以获取上月第一天(2016年7月1日)和当月第一天(2106年8月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

需要更改以下代码才能获得上月第一天(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)))
 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));