Как сгенерировать дату - PullRequest
       4

Как сгенерировать дату

0 голосов
/ 03 февраля 2011

Использование SQL Server 2005

Tabl1

ID Date Intime Outtime

001 20101201 080000 180000
001 20101202 210000 060000
001 20101203 180000 090000
001 20101204 100000 170000
....

.

Date Datatype is nvarchar
Intime, Outtime datatype is nvarchar
Intime, Outtime Format: HHMMSS

Из таблицы 1 я хочу сделать еще одно имя столбца как NextDate. В следующем столбце даты должна отображаться следующая дата столбца даты со следующим условием

If Outtime is Greater than Intime then it should display the next date
If outtime is less than intime then it should display the same date

Ожидаемый результат

ID Дата Интервал Время ожидания Следующая дата

001 20101201 080000 180000 20101201 (Outtime is less than Intime)
001 20101202 210000 060000 20101203 (Outtime is greater than Intime)
001 20101203 180000 090000 20101204 (Outtime is greater than Intime)
001 20101204 100000 170000 20101204 (Outtime is less than Intime)
....

Как сделать запрос для вышеуказанного условия.

Нужна помощь по запросу.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Я согласен с @ marc_s , когда вы работаете с датой и временем, лучше всего использовать тип данных datetime.

Но вы можете использовать этот код временно.

SELECT ID, [Date], Intime, Outtime, 
            CASE 
                WHEN Outtime > Intime THEN 
                    [Date] 
                WHEN Outtime < Intime THEN 
                    CONVERT(
                            nvarchar,
                            DATEADD(
                                    dd,
                                    1,
                                    CONVERT(
                                            datetime,
                                            SUBSTRING([Date],1,4)+'-'+SUBSTRING([Date],5,2)+'-'+SUBSTRING([Date],7,2)
                                            )
                                    ),
                            112
                            ) 
                END AS NewDate
0 голосов
/ 03 февраля 2011

Вариант использования выбора:

DECLARE @Dates  Datetime
DECLARE @Intime Datetime
DECLARE @Outtime Datetime

Set @Intime='1/21/2010'
Set @Outtime='1/20/2010'
Set @Dates=GETDATE()

Select @Dates,@Intime,@Outtime,
         cASE 
     WHEN @Outtime > @Intime then  @Dates + 1
     WHEN @Outtime < @Intime then @Dates
     ELSE GETDATE()
     END as [NextDate]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...