2016-10-14 24 views
0

我使用sql server。 我一直在做的是这样的:如何在SQL中打印一个星期的日期

LEFT(yearmonth,4) + RIGHT('0' + CONVERT(VARCHAR, DATEPART(WK, yearmonthdate)), 2) 

yearmonth = '201601'

年月日= '20160101' 到 '20160131'

打印出这样的:

201601 
201602 

但我想打印出如下内容:

20160101-20160102 
20160103-20160109 

我该如何做到这一点? 我在谷歌,但我无法打印出这样的。 预先感谢您。

+3

也添加样本数据。同时标记您正在使用的DBMS –

+1

@a_horse_with_no_name一些stackoverflow应该如何强制用户在发布问题之前标记他们正在使用的DBMS –

+0

@Prdp在'sql'标记的标记建议中明确提到了DBMS。问题是人们不会阅读说明和指导方针。 –

回答

0
DECLARE @Table TABLE (Col1 INT, Col2 DATETIME) 
DECLARE @StartDT DATETIME 
DECLARE @tempDT DATETIME 
DECLARE @EndDT DATETIME 
SET @StartDT = DATEFROMPARTS(YEAR(getdate()),MONTH(getdate()),1) 
SET @EndDT = EOMONTH (@StartDT) 

set @[email protected] 

WHILE @StartDT < @EndDT 
BEGIN 
PRINT 
    CONVERT(VARCHAR,cast(@tempDT as date)) 
    + ' - ' + 
    convert(VARCHAR,cast(DATEADD(dd, 7-(DATEPART(dw, @StartDT)), @StartDT) as date)) 

SET @StartDT = DATEADD(dd, 7-(DATEPART(dw, @StartDT)), @StartDT) 
SET @tempDT = DATEADD(dd,1,@StartDT) 
SET @StartDT = DATEADD(WEEK,1,@StartDT) 
END 

PRINT 
    CONVERT(VARCHAR,cast(@tempDT as date)) 
    + ' - ' + 
    convert(VARCHAR,cast(@EndDT as date)) 
相关问题