SQl 在日期范围内加入

问题描述 投票:0回答:2

我有一张桌子

ID, Start Date, End Date

我有第二个表,其中有一列,日期从 2000 年到 2050 年。这是连接开始日期和结束日期的关键 日期_ID

我想要一张这样开始的桌子

ID, Start Date, End Date
123, 1/1/2017,  1/5/2017

然后将其连接到日期表(第二个表)以输出这样的表

ID, Start Date, End Date, Day Date
123, 1/1/2017,  1/5/2017, 1/1/2017
123, 1/1/2017,  1/5/2017, 1/2/2017
123, 1/1/2017,  1/5/2017, 1/3/2017
123, 1/1/2017,  1/5/2017, 1/4/2017
123, 1/1/2017,  1/5/2017, 1/5/2017

我想过在某个日期范围内加入,但这行不通。任何帮助/建议将不胜感激!我正在使用 MYSQL。

SELECT 
    name,
    date(start_date),
    date(end_date),
    d.id as Day_Date
FROM
    f_table1 a
Left Join
    d_table2 d on d.id = d.id between date(a.start_date) and date(a.end_date)

上面的代码当然不会运行,但这是迄今为止我最好的尝试。

mysql date join date-range
2个回答
3
投票
SELECT 
    name,
    date(start_date),
    date(end_date),
    d.id as Day_Date
FROM       f_table1 a
Left Join  d_table2 d 
    on a.id = d.id 
   and d.`Day Date` between date(a.start_date) and date(a.end_date)

0
投票

尝试以下查询:

SELECT 
    name,
    date(start_date),
    date(end_date),
    d.id as Day_Date
FROM
    f_table1 a
RIGHT JOIN
    d_table2 d on d.id between date(a.start_date) and date(a.end_date)
© www.soinside.com 2019 - 2024. All rights reserved.