检查数据库中日期输入的日期范围

时间:2015-01-08 03:13:59

标签: php mysql date

我有一个名为nca的表,并且看到了它的值:

+--------+---------+------------+------------+--------------+---------+
| nca_id | nca_no  | issue_date | nca_amount | account_type | balance |
+--------+---------+------------+------------+--------------+---------+
|      1 | 14-0001 | 2015-01-08 |     200000 | ROP          |       0 |
|      2 | 14-0002 | 2015-01-08 |     400000 | ROP          |       0 |
|      3 | 14-0003 | 2015-02-02 |    1000000 | ROP          |       0 |
|      4 | 14-0004 | 2015-02-02 |     300000 | ROP          |       0 |
|      5 | 14-0001 | 2015-01-08 |     250000 | DBP-TRUST    |       0 |
|      6 | 14-0002 | 2015-01-08 |     400000 | DBP-TRUST    |       0 |
+--------+---------+------------+------------+--------------+---------+

现在使用此查询,它可以在issue_date上显示nca_amount基础的SUM:

SELECT SUM(nca_amount) FROM nca WHERE account_type = 'ROP' AND issue_date = '2015-02-02'

给出1300000的结果,因为它添加了具有日期2015-02-02的所有金额,如果您只在查询本身上设置日期就可以正常工作。

但我有想要解决的情景。我有一个html表单,用户可以输入他想要的日期。

如果用户输入2015-02-23的日期,我希望这个日期输入引用我的表中的2015-02-02的issue_date。我想要的是如果日期输入是在nca表上的issue_date的MONTH的RANGE中,这将引用在nca表上找到的issue_date并显示总和。例如:

user input_date ='2015-02-23'指的是issue_date ='2015-02-02'

因为输入的日期在我的nca表上找到的'2015-02-02'范围内,然后它可以显示上面我的查询中的总和。我该怎么做这个查询?任何人都可以帮助这个吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您想匹配月份:

SELECT SUM(nca_amount)
FROM nca
WHERE account_type = 'ROP' AND
      year(issue_date) = year('2015-02-02') and
      month(issue_date) = month('2015-02-02');

但是,这不允许查询在issue_date上使用索引。为此,您需要将查询重新命名为:

SELECT SUM(nca_amount)
FROM nca
WHERE account_type = 'ROP' AND
      issue_date >= date(concat(left('2015-02-02', 7), '-01')) and
      issue_date <  date(concat(left('2015-02-02', 7), '-01')) + interval 1 month;