【发布时间】:2016-02-18 09:16:28
【问题描述】:
我有两个输入字段 [开始日期] - [结束日期]
每当您在 YYYY-MM-DD 中输入日期范围时,例如:[2015-12-01] - [2015-12-05]
我想进行 SQL 查询以找出在该期间到期的发票。
数据库中没有存储到期日期的列,只有 invoice_date。
到期日始终为 invoice_date + 17 天
有没有办法从中提取相关发票?
这是我当前的查询,但它只选择已在该范围内生成的发票。
我希望它找到在上述输入范围内到期的人。
select * from orders
inner join
order_invoice on order_invoice.id_order = orders.id_order
where (current_state = 14) and
orders.date_add >= "'.$start_date.'" and
orders.date_add <= "'.$end_date.'" and
now() >= DATE_ADD(order_invoice.date_add, INTERVAL 17 DAY)
【问题讨论】:
-
mssql:
due_date = dateadd(day,17,invoice_date)mysql:date_add(invoice_date, INTERVAL 17 DAYS) -
我已经尝试过这个解决方案,但它只将查询跨度延长了 17 天,我希望它找到过期的发票(其中 date_add+17 在上面输入的范围内)@Used_By_Already
-
对于 SQL 服务器:使用 where 子句作为 'dateadd(day,17,invoice_date) BETWEEN [startdate] AND [enddate]'
-
标签上写着 mySql and Sql Server,但语法上写着 MySql,基于此,我已从您的问题中删除了 Sql-Server 标签。
-
在 now() 的最后一个条件中使用 OR 代替 and。