如果1月1日获得过去一年的结果

时间:2019-07-30 12:56:46

标签: sql-server date

我有一个计划的工作,每天(早上或晚上或第二天的第二天)运行,将一些报告发送到FTP。

我只想在报告中包括当年的记录。
如果是第二年1月1日上午,我想显示过去一年的所有记录。
如果是1月1日晚上,并且我有新年的记录,我只想包含新年的记录

示例:

transfer date    | job run date     | Records with year  
-----------------|------------------|------------------
30.12.2018 08:00 | 30.12.2018 19:00 | 2018  
30.12.2018 08:00 | 31.12.2018 02:00 | 2018  
31:12.2018 08:00 | 31.12.2018 19:00 | 2018  
31.12.2018 08:00 | 01.01.2019 01:00 | 2018  
01.01.2019 08:00 | 01.01.2019 19:00 | 2019  
01.01.2019 08:00 | 02.01.2019 01:00 | 2019 

最后一列是我想要的记录年份

我想要一个简单的解决方案,以使原始查询不会转换为函数或存储过程等。

我尝试了什么:

SELECT
       DateReceived ,
       UniqueNumber ,
       TransferDate ,
       CompanyCode
FROM
       ExportData
where
       YEAR(convert(datetime,TransferDate)) =
       case
              when year(convert(datetime,Transferdate))=year(getdate())
                     and month(getdate())              =1
                     and day(getdate())                =1
                     then year(getdate())
              when Year(convert(datetime,transferdate))=year(getdate())-1
                     then year(getdate())-1
       end
order by
       TransferDate DESC


1 个答案:

答案 0 :(得分:0)

您能否在WHERE条件下检查此简单调整对您是否有用。这将只返回表中可用的“最大年份”的记录。

&H8000000