【发布时间】:2017-02-06 19:45:03
【问题描述】:
如果我有一个包含以下列的约会表,我如何查询规则以提取在特定日期或两个日期之间发生的约会?
Appointments
------
id
name
dt_start
dt_end
rrule
例如,假设我有一个约会,从 2016 年 9 月 28 日开始,到 2017 年 4 月 28 日结束,它每 2 周发生一次,从星期一、星期五到 2017 年 4 月 28 日。 以下是 RRule:
RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20170428T230000Z;BYDAY=MO,FR EXDATE:20170414T023000Z
因此,使用上面的示例,上述约会的某些日期将包括以下内容:
2016-09-30 FRI
2016-10-10 MO
2016-10-14 FRI
2016-10-24 MO
现在如何使用 SQL 或任何其他方法查询此表以提取 2016 年 10 月 10 日发生的所有约会?
为了记录,这将在 C# asp.net 和 SQL 服务器中完成。是否有可用于解析和查询 rrule 的 C# 或 SQL Server 库?
我查看了ICAL.net,但似乎没有太多关于它的文档,或者我将如何将它用于上述目的。
有人对 ICAL.net 有任何经验吗?
【问题讨论】:
-
您将不得不拆分字符串并提取不同的部分,在您的开始和结束(递归 cte)之间建立一个日期表,或者日期维度会很好。然后使用一堆案例语句来识别日期、界面、星期几、月末、每月第一个星期四等的所有组合......这不是一项轻松的任务,而是可行的。
标签: jquery sql sql-server icalendar rrule