2016-10-12 1 views
-3

をマシンから現在の日付を選択し、比較するシナリオ1:現在の年SQL - 年に

常にコード現在の年1月の

最後の日曜日を選択する必要があります。昨年

常にコード

を選択する必要があります: - EX(31-01-2016)

現在のコードのために月の第1回2016

convert(date,DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)) 

シナリオ2を選びます

前年の1月の最後の日曜日です。現在のコード例について(01-02-2015)

- 2015年1月の第一

convert(date,DATEADD(yy, DATEDIFF(yy, 0, dateadd(YEAR, - 1, getdate())), 0)) 

代わりのハード日付をコーディングを選びます。私はマシンから日付を選び、比較したいと思う。

週開始日曜日から終了日土曜日です。助けてください?

+0

を、私はこれが役立つことが、私もそれをテストする時間がない質問 – user2331670

+0

を更新しました:https://social.msdn.microsoft.com/forum/sqlserver/en-US/735e9bfd-dc8f-4023-8177-827e0b87576e/last-sunday-of-the-month?forum = transactsql – Dan

+0

どのバージョンのSQL Serverを使用していますか? SQL Serverの新しいバージョンでこれを行う方法はいくつかあります。 –

答えて

0
-- Sample Demonstrative Data/Test Results 
Declare @YourTable table (SomeDate date) 
Insert Into @YourTable values ('2000-06-15'),('2001-06-15'),('2002-06-15'),('2003-06-15'),('2004-06-15'),('2005-06-15'),('2006-06-15') 
,('2007-06-15'),('2008-06-15'),('2009-06-15'),('2011-06-15'),('2012-06-15'),('2013-06-15'),('2014-06-15'),('2015-06-15'),('2016-06-15') 
,('2017-06-15'),('2018-06-15'),('2019-06-15'),('2020-06-15') 

-- To Confirm Results 
Select Year   = year(SomeDate) 
     ,LastSundayDate = DateAdd(DD,-DatePart(DW,DateFromParts(Year(SomeDate),12,31))+1,DateFromParts(Year(SomeDate),12,31)) 
     ,LastSundayName = DateName(DW,DateAdd(DD,-DatePart(DW,DateFromParts(Year(SomeDate),12,31))+1,DateFromParts(Year(SomeDate),12,31))) 
From @YourTable 

謝罪@dan戻り

Year LastSundayDate LastSundayName 
2000 2000-12-31  Sunday 
2001 2001-12-30  Sunday 
2002 2002-12-29  Sunday 
2003 2003-12-28  Sunday 
2004 2004-12-26  Sunday 
2005 2005-12-25  Sunday 
2006 2006-12-31  Sunday 
2007 2007-12-30  Sunday 
2008 2008-12-28  Sunday 
2009 2009-12-27  Sunday 
2011 2011-12-25  Sunday 
2012 2012-12-30  Sunday 
2013 2013-12-29  Sunday 
2014 2014-12-28  Sunday 
2015 2015-12-27  Sunday 
2016 2016-12-25  Sunday 
2017 2017-12-31  Sunday 
2018 2018-12-30  Sunday 
2019 2019-12-29  Sunday 
2020 2020-12-27  Sunday 
関連する問題