【发布时间】:2015-06-19 04:16:33
【问题描述】:
我的表有两列存储特定交易开始和结束的日期。这些列的值是整数,并遵循 Python 使用的日期时间库相同的模式。
我的逻辑目前适用于不环绕一周的日期范围,即。周一至周五、周四至周六、周二至周四等。我不知道如何捕捉下周的交易,例如周五至周一、周六至周二等。这是我使用 Django 的声明:
Deal.objects.filter(Q(deal_day_start__lte=current_day) & Q(deal_day_end__gte=current_day))
显然,这给我带来了周五 - 周一范围的问题,因为例如,当天可以是周日,日期时间为 0,而交易开始日为周五的 5。
有没有使用 Django 解决这个问题的简单方法?如果我使用 Python if else 语句,我显然可以创建多个分支并捕获这种情况,但我不确定如何使用 Django 来解决这个问题。
【问题讨论】:
-
只代表工作日的 int 是一个可怕的想法...重新考虑您的数据库架构...
-
@JoranBeasley 不用担心。在项目的早期,我可以改变它。您如何建议存储一周中的天数并使用它们进行比较?
-
只存储开始日期和结束日期的时间戳......这样你就拥有了所有信息
-
@JoranBeasley 我可以这样做...但是很多交易并不特定于特定日期,它们每周都会重复发生(例如,每周都会发生交易,周一至周三) ,这就是为什么我只将工作日存储在我的数据库中。如果我要存储时间戳,我可以用代码从中提取工作日,但我又回到了原来的问题。