我有一個包含 10 萬條記錄的表,其結構如下 -
| 店鋪編號 | 商品編號 | item_active_Date | item_inactive_date |
|---|---|---|---|
| NY0001 | FMC0001 | 2021-10-30 | 2021-11-30 |
| NY0001 | FMC0002 | 2021-01-10 | 2021-06-14 |
| NY0002 | FMC0003 | 2021-09-01 | 2021-09-10 |
| NY0002 | FMC0004 | 2021-01-01 | 2021-03-31 |
| NY0003 | FMC0005 | 2021-04-01 | 2021-05-30 |
| NY0003 | FMC0006 | 2021-06-02 | 2021-06-24 |
| NY0004 | FMC0007 | 2021-01-02 | 空值 |
需要確定給定日期范圍之間可用的 item_ID。只有 item_active 和 item_inactive 日期可用。
考慮在“2021-06-15”和“2021-11-25”之間可用的 item_ID。預期結果如下(當 item_inactive 日期不可用時,將其視為今天)-
| 店鋪編號 | 商品編號 | item_active_Date | item_inactive_date |
|---|---|---|---|
| NY0001 | FMC0001 | 2021-10-30 | 2021-11-30 |
| NY0002 | FMC0003 | 2021-09-01 | 2021-09-10 |
| NY0003 | FMC0006 | 2021-06-02 | 2021-06-24 |
| NY0004 | FMC0007 | 2021-01-02 | 空值 |
uj5u.com熱心網友回復:
我相信沿著這些路線的東西應該起作用:
SELECT item_ID FROM my_table
WHERE item_active_date <= $endDate
AND (item_inactive_date IS NULL
OR item_inactive_date >= $startDate);
盡管您需要確保您的 SQL 引擎將這些不等式中的值解釋為日期,而不是字串,因為您的表使用的格式在幾個月和幾年之間有幾天。
uj5u.com熱心網友回復:
你可以這樣做 :
SELECT * FROM Sample
WHERE
item_active_Date BETWEEN '2021-06-15' and '2021-11-25'
OR item_inactive_date BETWEEN '2021-06-15' and '2021-11-25'
OR item_active_Date IS NULL
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/369112.html
標籤:sql sql-server 日期 范围 日期范围
