2016-10-14 20 views
0

私はSQL Serverを使用しています。このようにプリントアウトする '20160131'日付でSQLで日付を印刷するには

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

YEARMONTH = '201601'

yearmonthdate = '20160101':私は何をしてきた はこれです:

201601 
201602 

しかし、私は次のように出力したい:

20160101-20160102 
20160103-20160109 

である。

どのように達成できますか? 私はグーグルだが、そのように印刷することができなかった。 ありがとうございます。

+3

サンプルデータも追加します。また、使用しているDBMSにタグを付けてください –

+1

@a_horse_with_no_name stackoverflowが質問を投稿する前に使用しているDBMSにタグを付ける方法を教えてください –

+0

@Prdp DBMSについて言及するには、 'sql'タグのタグ付け推奨事項に明示されています。問題は、人々が指示とガイドラインを読まないことです。 –

答えて

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)) 
関連する問題