根据另一个表中的日期选择日期范围内的行。 (MYSQL)

时间:2017-04-07 13:36:54

标签: mysql sql

我有两个表,它们共享一个链接两者的键。表A具有日期列(格式为MM / DD / YYYY),表B具有格式的日期字段(YYYY-MM-DD HH:MM:SS)。

我需要做的是选择表B中的所有内容,它们在表A中的日期字段的30天内有一个密钥匹配表A和一个日期字段。

编辑:两个变量都是varchars,这是我目前所拥有的(在连接中使用别名formattedEffective时出错)。如果我能以这种方式使用别名,我认为下面的内容会有效。

select *, 
DATE_FORMAT(STR_TO_DATE(`Eff_date`, '%m/%d/%Y'), '%Y-%m-%d') as formattedEffective 
from `customers`
    right join `dispatch` on `customers`.`Member_no` = `dispatch`.`Member_no` 
        AND `dispatch`.`sortdate` > formattedEffective 
        AND `dispatch`.`sortdate` < DATE_ADD(formattedEffective,INTERVAL 30 DAY)

1 个答案:

答案 0 :(得分:1)

社区要求的是能够创建一个场景来为您的问题提供明确的答案(创建表语句,示例数据等)。以下方法是推测。

查询所做的假设是eff_date是一个字符串,sortdate存储为MySQL日期(即日期,日期时间,时间戳)。

select d.*,
       str_to_date(c.eff_date, '%m/%d/%Y') ) as formattedEffective 
  from customer c
  join dispatch d on (   d.member_no = c.member_no
                     and d.sortdate between str_to_date(c.eff_date, '%m/%d/%Y')
                                        and str_to_date(c.eff_date, '%m/%d/%Y')  + interval 30 day );