我有一个定义重复日期模式的系统。每个模式都有一个基准日期(通常是过去几年,模式创建时)和日期计数(循环),因此例如它可能定义七天的模式:
表:模式
ID | BaseDate | DayCount
-----------------------------
1 | 01/02/2005 | 7
表:PatternDetail
PID | Offset | Detail
----------------------
1 | 0 | A
1 | 1 | B
1 | 2 | B
1 | 3 | C
etc.
(详细信息列是特定于域的,不相关。)
我想要做的是,给定一个日期(比如今天)在给定工作模式的 PatternDetail 表中找出正确的偏移量。在伪代码中我会这样做:
offset = ((today.InDays) - (Pattern.BaseDate.InDays)) % (Pattern.DayCount)
我如何在SQL中执行此操作(需要在MSSQL Server和Oracle中工作)?换句话说,我如何计算两个日期之间的天数并取这个差异的模数?
答案 0 :(得分:3)
我不知道PL / SQL中有什么可用,但是T-SQL有一个DATEDIFF函数,它似乎是您正在寻找的:
@Offset = ((DATEDIFF(day, @BaseDate, GETDATE()) % @DayCount)
答案 1 :(得分:2)
使用DATEDIFF可以使日数不同。这给出了一个整数。 然后使用%(标准SQL模运算符)。
这很简单吗?