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/

相关文章:

c# - 如何确定它是否是参照完整性违规异常

sql-server - 在 T-SQL 中将percentile_cont 与 "group by"语句结合使用

PHP:在mysql中的时间戳值内拆分日期和时间

Java深拷贝String和Date对象的区别

SQL - 仅更新日期()数据

sql-server - 在 SQL Server 的 OPENXML 函数中将空元素视为空值

sql - 如何获取 View 中的列级依赖关系

sql - T-SQL - 从特定字符开始的字符串中删除字符

tsql - smallint 与 int 的性能对比

Java - 日期时区转换