как фильтровать по датам после текущей даты? - PullRequest
0 голосов
/ 21 мая 2019

Я хочу отфильтровать даты истечения срока по датам после текущей даты.Проблема в том, что текущая дата находится в трех столбцах;exp0year, exp0mo и exp0da.

Я пытался поместить несколько выражений где, проблема с скажем exp0mo > 4 дисквалифицирует дату как 1/1/2020.

Select exp0yr,exp0mo,exp0da,policy0num,zip0post,add0line01,add0line03,add0line04,profit0ctr
from ni.pmsp0200
where exp0yr>118  and exp0mo>04 and exp0da>20 and profit0ctr='eoh'
group by exp0yr,exp0mo,exp0da,policy0num,zip0post,add0line01,add0line03,add0line04,profit0ctr

Я ожидал получить даты после 05/21/2019, но вместо этого получил все эти даты, кроме 01/01/2020 - 05/20/2020.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Попробуйте это

--Temp table 
CREATE TABLE #Test
(cYear  VARCHAR(4) NOT NULL, 
 cMonth VARCHAR(2) NOT NULL , 
 cDay   VARCHAR(2) NOT NULL 
);
--Sample data
INSERT INTO #Test
       SELECT '2019', 
              '04', 
              '01'
       UNION ALL
       SELECT '2018', 
              '06', 
              '01';
--Calculated column - you can define prefix, such as leading zeros
ALTER TABLE #TEST
ADD calcDate AS CYEAR + CMONTH +  CDAY PERSISTED


--Shows only one record
SELECT *
FROM #Test
WHERE calcDate BETWEEN '20190101' AND '20191231';
0 голосов
/ 21 мая 2019

Если вы используете sql server 2012 + Вы можете получить текущую дату данных следующим образом

datefromparts(exp0yr, exp0mo, exp0da)

В противном случае используйте что-то вроде этого:

 SELECT CAST(CONCAT(CAST(@exp0yr AS VARCHAR(4)), '-',CAST(exp0mo AS VARCHAR(2)), '-',CAST(exp0daAS VARCHAR(2))) AS DATE)

Ваш сценарий становится чем-то вроде этого

declare @mydate as date
set @mydate='2019/05/21' --Put your target date here
    Select exp0yr,exp0mo,exp0da,policy0num,zip0post,add0line01,add0line03,add0line04,profit0ctr
    from ni.pmsp0200
    where datefromparts(exp0yr, exp0mo, exp0da)>@mydate and profit0ctr='eoh'
    group by exp0yr,exp0mo,exp0da,policy0num,zip0post,add0line01,add0line03,add0line04,profit0ctr
...