簡體   English   中英

從數據庫中的日期檢查日期輸入的范圍

[英]Checking the range of the date input from the date on the database

我有一個名為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的總和:

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的范圍內,這將引用在nca表上找到的issue_date並顯示總和。 例如 :

用戶input_date ='2015-02-23'指的是issue_date ='2015-02-02'

因為輸入的日期在我的nca表中找到的'2015-02-02'范圍內,所以它可以像上面的查詢一樣顯示總和。 我該如何查詢? 有人可以幫忙嗎? 提前致謝。

如果要匹配月份:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM