使用范围内的日期来连接和显示所有日期?

Posted

技术标签:

【中文标题】使用范围内的日期来连接和显示所有日期?【英文标题】:Using the dates in ranges to join and display all dates? 【发布时间】:2020-12-23 17:59:41 【问题描述】:

我有两张桌子,桌子 A 和桌子 B。

表 A 包括人们的发薪时间和日历日期。表 B 包含开始日期、结束日期和支付周期信息。

表 A 中的样本数据:

Calendar_Date   PayHours   Name
11/23/2020      10.0       Scott, Michael
12/02/2020      12.0       Harper, Jim
12/03/2020      12.0       Kim, Maggie
12/10/2020      24.0       Rogers, Steve

表 B 中的示例数据:

Start_date  End_Date    PayPeriod
2020-11-22  2020-12-05  2020-12-wk1
2020-12-06  2020-12-19  2020-12-wk3

我需要加入这些表,这样我才能得到这样的结果。

Calendar_Date   PayHours   Name             PayPeriod
11/23/2020      10.0       Scott, Michael   2020-12-wk1
12/02/2020      12.0       Harper, Jim      2020-12-wk1
12/03/2020      12.0       Kim, Maggie      2020-12-wk1
12/10/2020      24.0       Rogers, Steve    2020-12-wk3

显然加入 A.Calendar_date = B.Start_date(或 B.end_date)不会给我所需的结果。但是有没有办法将这两个表与日期连接起来?

【问题讨论】:

【参考方案1】:

您可以加入属于支付周期范围的日历日期,如下所示:

select a.*, b.payperiod
from tablea a
inner join tableb b 
    on  c.calendar_date >= b.start_date
    and c.calendar_date <= b.end_date

【讨论】:

以上是关于使用范围内的日期来连接和显示所有日期?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 未显示日期范围内的所有数据

SQL:如何显示给定范围内的所有日期?

SQL - 显示给定范围内的所有日期,并使用数据库中的时间戳计算该日期有多少帖子

mysql使用内部连接根据数据库中的日期范围显示数据

统计日期范围内的天数

Mysql - 使用多个连接表查找丢失的日期