0

これらは、6 か月前の月の最初を取得するときに機能します。

DECLARE @Now DATETIME = SYSDATETIME();

--1
SELECT CONVERT(INT,CONVERT(CHAR(8),DATEADD(mm,DATEDIFF(mm,0,@Now)-5,0),112));

--2
SELECT CONVERT(INT,CONVERT(CHAR(6),DATEADD(mm,-5,@Now),112) + '01');

標準関数を使用して同じ結果を得るにはどうすればよいCASTですか?

4

4 に答える 4

3

まあ、あなたはこのようにすることができますが、それは使用しませんcast():

select (year(DATEADD(mm,DATEDIFF(mm,0,@Now)-5, 0))*10000 +
        month(DATEADD(mm,DATEDIFF(mm,0,@Now)-5, 0))*100
        +1)
于 2013-08-16T11:05:03.677 に答える
1

ここでMadhivananの答えを拡張すると、CONVERTの代わりにCASTを使用する方法があります:)

SELECT REPLACE(CAST(DATEADD(MONTH, DATEDIFF(MONTH, 0, @now) - 5, 0) AS DATE), '-', '')
于 2013-08-16T22:32:18.127 に答える
0

効率的な方法は

select dateadd(month,datediff(month,0,@now)-5,0)
于 2013-08-16T11:33:04.873 に答える