Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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 获取报告的日期范围_Sql_Date_Datetime - Fatal编程技术网

Sql 获取报告的日期范围

Sql 获取报告的日期范围,sql,date,datetime,Sql,Date,Datetime,我正在创建一份报告,其中我希望日期范围为“2015年6月或运行本月报告前36个月,以较晚者为准” 我的剧本从2016年6月开始,一个月后就可以拿回来36本了。如下 SELECT (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender

我正在创建一份报告,其中我希望日期范围为“2015年6月或运行本月报告前36个月,以较晚者为准”

我的剧本从2016年6月开始,一个月后就可以拿回来36本了。如下

SELECT  (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender 
                WHERE 1=1 
                AND CAST(dates AS DATETIME) >= DATEADD(mm, -35 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
                AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)



SELECT  (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender 
                WHERE 1=1 
                AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
                AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
从efoxfc.dbo.FTX_FA_日历中选择(QUOTENAME(RTRIM)(LTRIM(cast(datename(month,[dates])作为字符(15)))+,'+RTRIM(LTRIM(cast(year([dates])作为字符(20‘‘‘‘‘‘))+,')
其中1=1
和CAST(日期为DATETIME)>=DATEADD(mm,-35,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
和dates=DATEADD(mm,-5,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
和日期
从efoxfc.dbo.FTX_日历中选择(QUOTENAME(RTRIM)(LTRIM(cast(datename(month,[dates])作为字符(15)))+,'+RTRIM(LTRIM(cast(year([dates])作为字符(20))+,'))
其中1=1
和CAST(日期为DATETIME)>=DATEADD(mm,-35,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
和dates=DATEADD(mm,-5,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
和dates=DATEADD(mm,-35,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
或
CAST(日期为DATETIME)>=DATEADD(mm,-5,DATEADD(m,DATEDIFF(m,0,GETDATE()),0))
)

和日期A
UNION
UNION ALL
,如果您试图将这些数据作为单个查询的结果返回

UNION ALL
将返回所有结果,而
UNION
将对数据集执行
DISTINCT


这将进行更多讨论。

使用UNION ALL或UNION请选择正确答案(如果有),否则请提供未回答的后续信息。我正在查找数据范围“2015年6月或运行当月报告前36个月,以较晚者为准”,例如,如果我今天运行报告,它将显示从6月开始的日期,截至2015年6月,2015年超过了2012年11月(36个月前)。现在考虑我在2018月2015号运行同样的报告,所以它将显示我11月2015,因为11月1日超过2015年6月。这对你有意义吗?
    SELECT  (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender 
            WHERE 1=1 
            AND CAST(dates AS DATETIME) >= DATEADD(mm, -35 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
            AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
UNION ALL
    SELECT  (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender 
            WHERE 1=1 
            AND CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
            AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)
SELECT  (QUOTENAME(RTRIM(LTRIM(cast(datename(month, [dates]) as char(15))))+',' + RTRIM(LTRIM(cast(year([dates]) as char(20))))) + ',') FROM efoxsfc.dbo.FTX_FA_Calender 
            WHERE 1=1 
            AND (
                CAST(dates AS DATETIME) >= DATEADD(mm, -35 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
                OR
                CAST(dates AS DATETIME) >= DATEADD(mm, -5 ,DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)) 
                )
            AND dates <= DATEADD(m, DATEDIFF(m, 0,GETDATE()), 0)