sql-server - 需要有关 SQL 查询的帮助,从周期表中选择日期范围

标签 sql-server tsql date range period

我有一个名为 Periods 的表,看起来像这样

周期ID | 期间年份 | PeriodQuarter

7 | 2009 | 1

8 | 2009 | 2

9 | 2009 | 3

10 | 2009 | 4

11 | 2010 | 1

12 | 2010 | 2

表中的每一行代表一年中 4 个季度中的一个(例如 3 个月的学期)。例如。第一行代表 2009 年第 1 期(即日期范围 2009 年 1 月 1 日至 2009 年 3 月 31 日。

现在我需要编写一个查询,从上表中选择行/时间段,其中时间段出现在 2 个日期范围之间,按照以下伪代码。

select *
from Periods
where Period is between @startDate and @endDate

查询将在名为 dbo.GetPeriodsFromDateRange 的表值函数中使用,@startDate 和@endDate 是该函数的参数。

我卡住了,不知道该怎么做。请帮忙。这适用于 T-SQL (MS SQL Server 2000/2005)

最佳答案

尝试

select *
from Periods
where  dateadd(qq,PeriodQuarter-1,dateadd(yy,PeriodYear -1900,0)) 
between @startDate and @endDate

关于sql-server - 需要有关 SQL 查询的帮助,从周期表中选择日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193886/

相关文章:

sql - ALTER TABLE 语句与 CHECK 约束冲突

sql - 重构使用 row_number() 返回具有唯一列值的行的 tsql View

ruby-on-rails - Ruby - 获取两个日期之间的月份范围

tsql - 关于 SQL Server 2008 R2 中列的元数据?

sql-server - 确定是否有任何值为 null,如果为 true,则为 false,否则为 true

ruby-on-rails - 在 Rails 中的方法之间使用 arel 和 gt lt 获取日期查询

java - Java中如何初始化日期类型的变量?

.net - SQL Server 2017 上的 CLR 严格安全性

c# - 使用外部 SQL Server 2008 R2 更新 linq 中的语句

sql-server - 使用 sql_variant 有哪些陷阱?