【发布时间】:2015-04-23 01:46:57
【问题描述】:
我使用的 SQL 数据库架构类似于此链接上的架构。 Best way to store working hours and query it efficiently
我正在使用此基本架构存储某个位置的营业时间
- 商店 - INTEGER
- DayOfWeek - 整数 (0-6)
- 开放时间 - 时间
- 关闭时间 - 时间
但是,我要做的是为当前的 DateTime(即今天)获取商店营业的 NEXT (n) 天数。因此,例如,如果我不想找到商店在营业时间内营业和配置的接下来三天,则商店在周日关闭,今天的日期是 21/02/2015(星期六)我想要返回(21/02/2015)星期六、(23/02/2015)星期一和(23/02/2015)星期二。
如果是星期日,我会返回(23/02/2015)星期一、(24/02/2015)星期二和(25/02/2015)星期三 (因为它在周日关闭)最后如果是 (20/02/2015)Friday 它会返回 (20/02/2015)Friday, (21/02/2015)Saturday, (23/02/2015 )星期一。
我不知道这在 SQL 或 C# 中是否更容易做到,但如果弄清楚如何计算它,我会在精神上苦苦挣扎。
任何指针,指导都会很棒。
谢谢
【问题讨论】:
-
就个人而言,我会使用 C# 而不是 SQL。一旦你想出了可行的解决方案,你总是可以尝试在 SQL 中重新实现算法。
-
为了证明我之前的评论是正确的——您面临的数据读取非常少(您只需要给定商店营业的
DayOfWeeks,最多 7 条记录),并且计算量适中。 -
我同意@Grx70。从数据库中提取数据并在代码中执行您的逻辑。
-
我从代码中提取哪些数据?在 c# 中获取接下来 20 天的日期,然后获取一组不同的开放日值,然后对每一行进行比较以删除与 dayofweek 整数不匹配的日期会更容易吗?这是我能理解的唯一方法。
标签: c# sql-server date