sql - 仅针对当前财政年度日期的动态 SQL

标签 sql sql-server date reporting-services ssrs-2008

我有一个数据库,其中包含我关注的两个日期。

开始日期 + 结束日期

这些日期以下列格式存储:

2008-06-23 00:00:00.000

我需要添加一条动态 SQL 以仅返回属于当前财政年度的日期。

例如 01/04/2011 - 31/03/2012 就是这个财政年度。

因此,任何结束日期在这些日期内或为 NULL 的记录都被归类为“事件”

年份部分需要是动态的,这样一到 2012 年 4 月 1 日,我们就会进入新的财政年度,并将从 2012 年 1 月 4 日到 2013 年 3 月 31 日等返回数据。

可以建议一些代码或指出我忽略的任何规则吗?

最佳答案

尝试:

...
where StartDate >= 
    case 
        when month(getdate()) > 3 
            then convert(datetime, cast(year(getdate()) as varchar) + '-4-1')
        else 
            convert(datetime, cast(year(getdate()) - 1 as varchar) + '-4-1')
    end 
and (EndDate is null or EndDate < 
    case 
        when month(getdate()) > 3 
            then convert(datetime, cast(year(getdate()) + 1 as varchar) + '-4-1')
        else 
            convert(datetime, cast(year(getdate()) as varchar) + '-4-1')
    end)

关于sql - 仅针对当前财政年度日期的动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9065501/

相关文章:

sql-server - SQL Server 索引顺序(日期时间字段)

javascript - 日期构造函数 : numeric arguments vs. 字符串参数在某些情况下给出不同的日期

php按日期从mysql获取数据

javascript - HTML 将参数传递给 javascript 函数,然后进行日期比较,然后 javascript 返回结果以 html 显示

php - 按多列对 sql 结果排序时出现问题

sql-server - 打开脚本任务时 SSIS 丢失文件引用

sql - MySQL - 我如何对连接的数据进行内部连接排序

SQL:将记录设置为系统日期

mysql - 从特定列表中选择随机数

PHP mssql_connect() 到 Azure 数据库