【发布时间】:2013-04-03 18:29:49
【问题描述】:
在 PostgreSQL 中查找给定月份的最后一个工作日
用法:如果月末在星期六或星期日,则返回上一个星期五,否则使用月末
例子:
- 2013 年 3 月 31 日是星期天,所以返回 2013 年 3 月 29 日
- 2013 年 11 月 30 日是星期六,所以返回 2013 年 11 月 29 日
如何在 PostgreSQL SQL 中编写这个?
到目前为止,我所拥有的是(仅返回月末,但当它们落在星期六或星期日时,月末不存在):
SELECT as_of_dt, sum(bank_shr_bal) as bank_shr_bal
FROM hm_101.vw_gl_bal
WHERE as_of_dt = (date_trunc('MONTH', as_of_dt) + INTERVAL '1 MONTH - 1 day')::date
GROUP BY 1
谢谢
【问题讨论】:
-
不同类型的假期呢?您也需要对它们进行特殊处理吗?在这种情况下,可能会在合适的时间段内用每个月的最后一天填充一个小表格。
-
这是一种复杂的说法,“返回给定月份的最后一个工作日?”
-
谢谢普伦德拉。现在你让我想我需要重新提出我的问题。我可以看到假期将如何成为一个考虑因素。在我的数据世界中,唯一导致月末日期缺失的事件是月末在星期六或星期日。
-
是的,我认为 Mike Sherrill 'Catcall' 是正确的,我需要重新表述这个问题。
标签: sql postgresql greenplum