gpt4 book ai didi

sql - 表示日期/时间段

转载 作者:行者123 更新时间:2023-11-29 13:46:31 28 4
gpt4 key购买 nike

我正在开发一个有多种不同费率的预订平台。这些费率由一天中的时间、星期几和一年中的一天决定。以下是所涉及的间隔类型的一些示例:

  • 周一至周五,上午 9 点至下午 5 点
  • 周六和周日,中午 12 点到早上 9 点
  • 周六和周日,上午 9 点至下午 5 点
  • 周六和周日,下午 5 点到凌晨 12 点
  • 12 月 23 日至 24 日,任何时间
  • 12 月 26 日至 27 日,随时

表示这一点的最佳方式是什么,以便可以查询任何给定日期的不同有效汇率?

目前,我的做法是使用两个数组类型的列,days_of_week[]hours_of_day[],分别用天/小时填充它们费率适用。考虑到像 12 月这样的特殊情况,我还有字段 valid_frominvalid_after,但是每年都需要一个新条目。

我查看了时间间隔等的日期时间函数 here但还没有看到任何看起来可以解决这个问题的东西。

最佳答案

为什么不直接将它们列在 where 子句中?例如对于第一个样本:

t=# select now(),extract('dow' from now()) between 1 and 5 and now()::time between '09:00' and '17:00';
now | ?column?
-------------------------------+----------
2017-11-27 16:56:01.544642+00 | t

所以你将 (extract('dow' from now()) between 1 and 5 and now()::time between '09:00' and '17:00') 放在括号中并在 OR...

上添加相同的括号

您可以将它们全部添加到以 timestamptz 作为参数的函数中,并返回 true 或 false 以在 where 子句中使用

关于sql - 表示日期/时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47515482/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com