[英]SQL for locating a date range using a date range
好的,這有點令人困惑(因此,我為什么要尋求幫助)
我在MySQL數據庫中有一個表,看起來像這樣:
+-----+-------------+------------+------------+---------------+---------+-----------+---------+
| id | supplier_id | start_date | end_date | days_attended | user_id | client_id | trashed |
+-----+-------------+------------+------------+---------------+---------+-----------+---------+
| 1 | 15 | 1410098400 | 1410703200 | 2 | 7 | 424 | 0 |
| 2 | 84 | 1411912800 | 1420117200 | 3 | 7 | 395 | 0 |
| 3 | 183 | 1390827600 | 1418907600 | 2 | 7 | 96 | 0 |
| 4 | 85 | 1412431200 | 1419512400 | 5 | 7 | 105 | 0 |
| 5 | 168 | 1411912800 | 1412258400 | 3 | 7 | 53 | 0 |
我的難題是我想從該表創建一個報告,該報告將日期范圍作為輸入,並返回該日期范圍內的日期列表。
如您所見,每行都有一個開始和結束日期。 因此,我需要一個SQL查詢,該查詢將使用用戶選擇的兩個日期在PER ROW這兩個日期中搜索一個日期。
即,用戶選擇日期范圍:2015年9月21日至2015年12月21日。 然后查詢將通過使用表中的現有日期范圍來查找這些日期之間的日期。
如果要檢查start_date或end_date是否在用戶的開始日期和結束日期之間。
您可以在此處插入user_start_date和user_end_date的用戶值:
SELECT * FROM table
WHERE (start_date >= user_start_date AND start_date <= user_end_date)
OR (end_date >= user_start_date AND end_date <= user_end_date);
請嘗試這個
SELECT * FROM table WHERE (
start_date >= UNIX_TIMESTAMP(STR_TO_DATE(var_date_1, '%d/%M/%Y')) AND
end_date <= UNIX_TIMESTAMP(STR_TO_DATE(var_date_2, '%d/%M/%Y'))
) ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.