【问题标题】:Get current year in TSQL在 SQL 中获取当前年份
【发布时间】:2014-07-20 17:51:06
【问题描述】:

我正在尝试提取数据以生成报告,并且正在编写年初至今的报告。我在表中的列被格式化为日期时间。我正在尝试运行一个 select 语句来获取 date = this year 的所有结果。

例如:

SELECT  A.[id], A.[classXML]
FROM   tuitionSubmissions as A
WHERE A.[status] = 'Approved' AND A.[reimbursementDate] = THISYEAR
FOR    XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');

有没有简单的方法来完成这个?

【问题讨论】:

  • Year(GetDate()) 获取当前年份

标签: sql tsql datetime


【解决方案1】:

是的,事实上这非常容易:

WHERE YEAR(A.[reimbursementDate]) = YEAR(GETDATE())

【讨论】:

  • 虽然简单的方法并不是最有效的方法。这不是可耻的。
  • @MartinSmith - 绝对正确,但我并没有盯着他的 SQL Server 实例看是否重要。也许他只有 30,000 条记录,此时这无关紧要,因为数据量非常小。不过,这是一个公平的观点!
【解决方案2】:

如果性能是一个问题,这应该是一个更好的方法(尽管它不那么可读)

where A.[reimbursementDate] between  
     DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) and
     DATEADD(MILLISECOND, -3, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))

那些时髦的 DATEADD 语句返回当年的第一天和最后一天(截至 12 月 31 日 23:59:59.997)。由于reimbursementDate 不包含在函数中,因此查询将能够利用任何适用的索引。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多