mysql - 如何使用存储过程从 01-04-2014 到当前日期之间的 mysql 数据库中获取数据

标签 mysql sql database stored-procedures

数据库表包含日期时间类型为发票时间的字段,我必须获取从给定日期到当前日期的数据。我按如下方式创建了程序,但它不起作用。我指定的开始日期为 01-04-2014,但此日期之前的日期也被提取到表中。我添加了选择指定日期之间数据的条件,但它不起作用。有人帮我解决这个问题。

CREATE DEFINER=`root`@`localhost` PROCEDURE `list_invoice`(invoice_number varchar(30),branch_code varchar(15))

begin    

select `invoice number`,date_format(`invoice date`,'%d-%m-%Y') `invoice date`,`customer name`,sum(b.amount) `total amount`,sum(round(b.amount * a.`tax percentage`,2)) 
`tax amount` from invoices a
inner join `challan master` b on b.`challan number` = a.`challan number`
inner join `customer master` c on c.`customer id` = b.`customer id`
where (((((locate(invoice_number,`invoice number`) > 0 or locate(invoice_number,`customer name`) > 0) and invoice_number <> '')
               or
      (invoice_number = ''))and(`invoice number` like concat('%',branch_code,'%'))) AND (date_format(`invoice date`,'%d-%m-%Y') BETWEEN '01-04-2014' and date_format(CURDATE(),'%d-%m-%Y')))
group by `invoice number`,`customer name`
order by date_format(`invoice date`,'%Y-%m-%d')desc, 1 desc;

end

最佳答案

将此添加到 where 子句中的查询:

where ((((locate(invoice_number,`invoice number`) > 0 or locate(invoice_number,`customer name`) > 0) and invoice_number <> '')
               or
      (invoice_number = ''))and(`invoice number` like concat('%',branch_code,'%')) and `invoice date` between date_format(str_to_date('01-04-2014','%d-%m-%Y'),'%Y-%m-%d') and date_format(CURDATE(),'%Y-%m-%d'))
group by `invoice number`,`customer name`
order by date_format(`invoice date`,'%Y-%m-%d')desc, 1 desc;

关于mysql - 如何使用存储过程从 01-04-2014 到当前日期之间的 mysql 数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609216/

相关文章:

mysql - 使用现有 MySQL 数据库创建 Rails 应用程序而不丢失数据

php - sql中缺少参数

基于先前选择的 PHP 选择

mysql - 在两个不同的数据库之间同步数据

mysql - 模板化 MySQL 的 my.cnf 以在 Puppet 中设置

SQL - 字段值的条件?

mysql - sql计算m/n关系中的多个列

mysql - 如何组合两个 select 和两个 where 子句?

mysql - SQL_BIG_SELECTS 错误

php - 关于实时搜索领域的安全问题