【问题标题】:SQL - pick current date from machine and compare the yearSQL - 从机器中选择当前日期并比较年份
【发布时间】:2017-02-21 09:55:36
【问题描述】:

场景 1:当年

代码总是需要选择

当年一月的最后一个星期日。前(31-01-2016)

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

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

情景 2:去年

代码总是需要选择

上一年一月的最后一个星期日。前(01-02-2015)

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

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

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

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

【问题讨论】:

  • @dan 抱歉,我已经更新了问题
  • 这可能会有所帮助,但我没有时间测试它:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
  • 你使用的是哪个版本的sql server?在较新版本的 sql server 中有不同的方法来执行此操作。
  • @sean-lange 我使用的是 SQL Server 2014
  • 我不太确定您对这里的输出有何期望。您想要当月的最后一个星期日还是一年中的最后一个星期日?或者可能是今年一月的最后一个星期日?还是明年一月的最后一个星期日?

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


【解决方案1】:
-- 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

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多