首页 > 解决方案 > 基于 getdate 的动态日期更改

问题描述

我们的一个依赖表仅在每月的第三天提供,我需要在前两天编写一个查询,它应该检查从第三天到当前月份数据的上个月数据。

尝试了CASE不起作用的表达式

select case when datepart(day, getdate()) <= 2 
            then (select * from T1 where date in (201904,201903))
            else (select * from T1 where date in (201905,201904))
       end

我知道我的方法是错误的,需要帮助才能实现我的要求。

标签: sqlsql-servertsql

解决方案


有点猜测,但像这样的东西?

SELECT {Columns}
FROM {Your Table} YT
WHERE YourDateColumn >= DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(DAY, -2, GETDATE())),0)
  AND YourDateColumn < DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(DAY, -2, GETDATE()))+1,0);

推荐阅读