从范围日期范围中删除特定日期值

时间:2013-04-19 15:36:54

标签: php mysql

我的数据库'fare'中有一张表。它有列vehicle_number,date_from,date_to和票价。 在date_from到date_to中定义的日期范围有几个车辆编号,以及在该特定期间的票价 日期范围。

vehicle_number  date_from    date_to       fare 
ABC123         2013-04-19   2013-04-24     $50
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20

我想运行一个查询,假设在哪里 vehicle_number - > ABC123 DATE 2013-04-20 fare as -->NULL 因此该表可以显示为

vehicle_number  date_from       date_to       fare 
ABC123         2013-04-19   2013-04-19     $50
ABC123         2013-04-21   2013-04-24     $50
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20

我尝试了INSERT查询并在该日期插入NULL,它被插入NULL但没有获得所需的输出。 此外,DELETE正在从DB中删除整行。

查询最初插入日期和票价:

INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('$vehicle_number','$from','$to','$vehicle_fares')

尝试将此查询设为NULL

INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('ABC123','2013-04-20','2013-04-20',NULL)

之后显示以下输出:

vehicle_number  date_from    date_to       fare 
ABC123         2013-04-19   2013-04-24     $50
ABC123         2013-04-20   2013-04-20     
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20

1 个答案:

答案 0 :(得分:0)

听起来你正试图只显示不是4-20的日期。这不是插入新记录的适当上下文。相反,您应该修改查询以在返回的结果中简单地排除此日期:

SELECT * FROM fare WHERE vehicle_number = ABC123 AND date_from <> 2013-04-20 AND date_to <> 2013-04-20