Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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_Sql Server_Sql Server 2008_Tsql_Date - Fatal编程技术网

Sql 查找给定日期之间的月份

Sql 查找给定日期之间的月份,sql,sql-server,sql-server-2008,tsql,date,Sql,Sql Server,Sql Server 2008,Tsql,Date,可能重复: 我需要带来结果,两个日期之间的月份是多少 假设日期是 Declare @FrDate datetime,@ToDate datetime Set @FrDate ='2010-05-31 17:38:58.577' Set @ToDate ='2010-09-01 17:38:58.577' 需要输出 Result MAY JUN JUL AUG SEP 试试这个: DECLARE @FrDate DATETIME, @ToDate DATETIME;

可能重复:

我需要带来结果,两个日期之间的月份是多少

假设日期是

Declare @FrDate datetime,@ToDate datetime
Set @FrDate ='2010-05-31 17:38:58.577' 
Set @ToDate ='2010-09-01 17:38:58.577'
需要输出

Result
MAY
JUN
JUL
AUG
SEP
试试这个:

DECLARE @FrDate  DATETIME,
        @ToDate    DATETIME;

Set @FrDate ='2010-05-31 17:38:58.577' 
Set @ToDate ='2010-09-01 17:38:58.577'

;WITH MONTHS (date)
AS
(
    SELECT @FrDate
    UNION ALL
    SELECT DATEADD(month,1,date)
    from months
    where date<=@ToDate
)
SELECT Datename(month,date) AS MONTH FROM MONTHS
要在结果中获取短月份名称,可以使用以下行:

SELECT LEFT(CONVERT(VARCHAR,date,100),3) AS MONTH FROM MONTHS
要获取大写月份名称,您可以使用
UPPER
函数:

SELECT UPPER(LEFT(CONVERT(VARCHAR,date,100),3)) AS MONTH FROM MONTHS
创建一个,然后您可以简单地编写以下内容:

select distinct MonthName
from dbo.Calendar
where BaseDate between @StartDate and @EndDate
另一种方法

Declare @FrDate datetime,@ToDate datetime 
Set @FrDate ='2010-05-31 17:38:58.577'  
Set @ToDate ='2010-09-01 17:38:58.577' 

select 
    datename(month,dateadd(month,number-1,@FrDate)) as month_name
from 
    master..spt_values 
where 
    type='p'and number between 1 and datediff(month,@frdate,@todate)+1

日期维度表可以简化此问题。。。
Declare @FrDate datetime,@ToDate datetime 
Set @FrDate ='2010-05-31 17:38:58.577'  
Set @ToDate ='2010-09-01 17:38:58.577' 

select 
    datename(month,dateadd(month,number-1,@FrDate)) as month_name
from 
    master..spt_values 
where 
    type='p'and number between 1 and datediff(month,@frdate,@todate)+1