Sql server 逐月显示
在使用上述值给出开始日期和结束日期时,需要按照以下格式显示报告 注意:需要单个查询Sql server 逐月显示,sql-server,Sql Server,在使用上述值给出开始日期和结束日期时,需要按照以下格式显示报告 注意:需要单个查询 Start Date: (mm/dd/yyyy) 05/09/2007 End Date: (mm/dd/yyyy) 08/20/2007 请帮我解答这个问题。这是答案。你可以像这样使用它: Start Date End Date 05/09/2007 05/31/2007 06/01/2007 06/30/2007 07/01/2007 07/31/2007 08/01/2007 08/20/2007 显示
Start Date: (mm/dd/yyyy) 05/09/2007
End Date: (mm/dd/yyyy) 08/20/2007
请帮我解答这个问题。这是答案。你可以像这样使用它:
Start Date End Date
05/09/2007 05/31/2007
06/01/2007 06/30/2007
07/01/2007 07/31/2007
08/01/2007 08/20/2007
显示在该时间范围内结束或开始的行
如果您希望以月-日-年格式输入日期,但您的SQL Server被确认使用其他格式,则可以使用set-dateformat。这只允许您更改会话的设置。对于dmy,其工作原理如下:
select
convert(varchar(32), StartDate, 101) as StartDate
, convert(varchar(32), EndDate, 101) as EndDate
, ...
from YourTable
where StartDate between '2007-09-05' and '2007-08-20'
or EndDate between '2007-09-05' and '2007-08-20'
您可以使用SQLServer2005尝试类似的方法
set dateformat 'mdy'
select cast('12/31/2009' as datetime)
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '09 May 2009',
@EndDate = '20 Aug 2009'
;WITH CTE AS(
SELECT @StartDate StartDate,
DATEADD(MM, 1, CAST('01 ' + DATENAME(mm, @StartDate) +' ' + CAST(DATEPART(yyyy, @StartDate) AS VARCHAR(4)) AS DATETIME)) - 1 EndDate
UNION ALL
SELECT EndDate + 1 StartDate,
CASE WHEN DATEADD(MM, 1, EndDate + 1) - 1 > @EndDate THEN @EndDate ELSE DATEADD(MM, 1, EndDate + 1) - 1 END EndDate
FROM CTE
WHERE EndDate < @EndDate
)
SELECT *
FROM CTE