Home > Back-end >  How to extract data between a date range which has only start and end date values in the table?
How to extract data between a date range which has only start and end date values in the table?

Time:11-29

I have a table with 10 million records and the structure is as follows -

Store ID Item ID 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 Null

The need is to identify the item_ID's available between a given date range. Only item_active and item_inactive dates are available.

Consider the item_ID's that were available between "2021-06-15" and "2021-11-25". The expected result is as follows (When item_inactive date is not available consider it as today)-

Store ID Item ID 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 Null

CodePudding user response:

Something along these lines should work, I believe:

SELECT item_ID FROM my_table
    WHERE item_active_date <= $endDate
        AND (item_inactive_date IS NULL
            OR item_inactive_date >= $startDate);

Although you'll want to make sure your SQL engine is interpreting the the values in these inequalities as dates, not strings, since since format your table is using has days between months and years.

CodePudding user response:

You can do this :

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 

Fiddle

  • Related