Справка по SQL-запросам: преобразование дат нетривиальным способом - PullRequest
3 голосов
/ 19 сентября 2008

У меня есть таблица со столбцом «Дата», и я хотел бы сделать запрос, который выполняет следующее:

Если дата понедельник , вторник , среда или четверг , отображаемая дата должна быть смещена на 1 день, как в

DATEADD(day, 1, [Date])
С другой стороны, если это Пятница , отображаемая дата должна быть увеличена на 3 дня (т. е. она становится следующей Понедельник ).

Как мне сделать это в моем операторе SELECT? Как в,

SELECT somewayofdoingthis([Date]) FROM myTable

(Это SQL Server 2000.)

Ответы [ 12 ]

0 голосов
/ 19 сентября 2008
create table #dates (dt datetime)
insert into #dates (dt) values ('1/1/2001')
insert into #dates (dt) values ('1/2/2001')
insert into #dates (dt) values ('1/3/2001')
insert into #dates (dt) values ('1/4/2001')
insert into #dates (dt) values ('1/5/2001')

    select
        dt, day(dt), dateadd(dd,1,dt)
    from
        #dates
    where
        day(dt) between 1 and 4

    union all

    select
        dt, day(dt), dateadd(dd,3,dt)
    from
        #dates
    where
        day(dt) = 5

    drop table #dates
0 голосов
/ 19 сентября 2008

вам нужно создать функцию SQL, которая сделает это преобразование за вас.

...