【发布时间】:2020-03-02 15:25:01
【问题描述】:
我有一个表格,其中每一行都包含带有时间戳格式的开始和结束日期,需要按开始日期和结束日期之间的工作日数过滤它们。
根据此处发布的一些解决方案,我创建了一个包含所有日期的单独表,并用如下布尔字段标记它们:
CREATE TABLE tbl_holiday (h_date TIMESTAMP, is_holiday BOOLEAN)
是否可以编写一个查询,按 start_date 和 date_date 之间的天数进行过滤,其中 _is_holiday 为 False?
我的数据库是 Impala。
【问题讨论】:
-
为什么有一个名为 holiday 的表和一个名为“is holiday”的列?这不是给定的吗?
-
这是一个保存每个日期状态的表,无论是否是假期,在另一个表上,假设 tbl_main 我们有 start_date 和 end_date,每行的 start_date 和 end_date 之间的商务天数需要 tbl_main
-
好吧,您也可以将假期列在一个列表中,计算两个日期之间的天数并减去实际假期的数量(例如一些
COUNT(*) FROM tbl_holiday WHERE h_date BETWEEN ...)。然后,您的假期列表中就没有稀疏(大部分无用)的噪音。不是世界末日,但你本身并不需要它。 -
这是一个超级复杂的查询,我希望提出一个自定义函数,然后使用它来获取计数,而不是运行查询,但是,Impala 有不同的语法和方式它适用于 SQL Server 不起作用。