【发布时间】:2019-10-26 19:18:37
【问题描述】:
我正在尝试找到一种方法来使用 postgresql 查询前一周的第一天和最后一天。
我已经找到了 mysql 、sql server 和其他的答案,但找不到 PSQL 的答案。
我一直在尝试使用 current_date 和间隔 1 week 或 - integer '7' ( BETWEEN current_date - INTERVAL '1 weeks' and current_date ),但它只让我从当天回来 1 周,而不是前一周的第一天或最后一天。
我正在寻找动态的东西:前一周的第一天可能是星期二,最后一天是星期四,并不总是星期一和星期五,这取决于前一周存储的内容。
我需要能够检索前一周的第一天和最后一天的结果,所以我相信这将是 2 个查询。
编辑:我的主要问题是针对同一问题的大多数答案都使用 current_date / now() 并减去固定天数来检索前一周的第一天。但是查询应该是动态的,它不会在每周的同一天完成-因此根据执行查询的日期,减去的天数会有所不同-并且我在商店中的前一周的第一天是' t 总是星期一,最后一天并不总是星期五。有时我一周只有 3 天的数据,所以第一天是星期二,最后一天是星期四,我不想在星期一返回 NULL,在星期五返回 Null
编辑 2:
虚拟数据看起来像这样:
id | date
1 monday(w1)
2 tuesday(w1)
3 wednesday(w1)
4 thursday(w1)
5 friday(w1)
6 tuesday(w2)
7 wednesday(w2)
8 friday(w2)
9 monday(w3)
10 tuesday(w3)
--query ran here--
显然,我的日期存储为实际日期格式( 2019-10-24 ),但在查询日期(催眠星期三)我希望前一周的第一项为 id 6,最后一项为是 8 号
【问题讨论】:
-
与您的问题无关,但是:
integer '7'可以简化为7 -
不是重复的。问题“如何在 PostgreSQL 中获取周开始和结束日期字符串?”使用固定的天数来检索前一周的第一天和最后一天,而我不应该这样做。因为我只能获得前一周 3 天的数据,并且第一天和最后一天会发生变化。
-
你能给我们举个例子,前一周的第一天不是星期一吗?也许这将有助于我们更好地理解您的问题。更多示例将不胜感激!
-
@jayD - 请查看我对答案的最新更新
标签: postgresql