SQL - 从机器中选择当前日期并比较年份

时间:2016-10-12 14:30:36

标签: sql sql-server tsql date sql-server-2014

情景1:当前年度

始终需要选择代码

  

今年1月的最后一个星期日。对于前(31-01-2016)

当前代码 - 选择2016年1月1日

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

情景2:去年

始终需要选择代码

  

去年1月的最后一个星期日。对于前(01-02-2015)

当前代码 - 选择2015年1月1日

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

而不是硬编码日期。我想从机器中选择日期并进行比较。

周从星期日开始,到星期六结束。有什么帮助吗?

1 个答案:

答案 0 :(得分: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

返回

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