2016-07-20 5 views
0

enter image description hereКонверсия удалось при преобразовании DateTime

Запрос:

UPDATE dbo.FinalExtract 
SET WEWE = CASE 
       WHEN Wait_time <= '24' 
       THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
       ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
      END 

Это то, что я хочу, но я получаю ошибку преобразования

Позвольте мне сказать вам wait_time является

wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + '.' 
     + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60) 

Выход: 19.07

Я хочу добавить +24 часа, если выходное значение меньше 24 часов, а если выходное значение более 24 часов, то добавьте дополнительные 24 часа.

Я попробовал этот

UPDATE dbo.FinalExtract 
SET WEWE = CASE 
       WHEN Wait_time <= '24' 
       THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
       ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
      END 

, но это не работает, я получаю сообщение об ошибке преобразования.

+0

пожалуйста, напишите вашу схему таблицы, выборочные данные и ожидаемый результат – Squirrel

+0

да я закачал скриншот ... где я хочу, чтобы обновить столбец Значения WEWE –

+0

Друзья plz im получают ошибку, если я выполняю этот запрос ..... Msg 241, Level 16, State 1, Line 2 Ошибка конверсии при преобразовании даты и/или времени из символьной строки. –

ответ

0

Временная часть должна иметь двоеточие. Ваш WAIT_TIME должен быть

wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + ':' 
     + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60) 
+0

Я сделал это ... im get wait_time в формате varchar, coz которых им не удалось выполнить этот запрос ... UPDATE dbo.FinalExtract SET WEWE = случай, когда Wait_time <= '24', а затем конвертировать (varchar, dateadd (час, -24, Wait_time)) else convert (varchar, dateadd (hour, +24, Wait_time)) end ...... as this показывает ошибку преобразования –

+0

Я пробовал это .......... ........ UPDATE dbo.FinalExtract SET WEWE = IIF ( wait_time <= 24, dateadd (час, -24, Wait_time), dateadd (час, +24, Wait_time)) , но снова im get error Ошибка конверсии при преобразовании значения varchar '0,2' в тип данных int. –

0

я думаю, что это поможет вам:

Declare @timeCreated datetime='2016-06-09 12:26:12.000' 
Declare @timeresponded datetime='2016-06-09 14:28:12.000' 
declare @waittime datetime; 
set @waittime=(select case when DateDiff(hh,@timeCreated,@timeresponded) < 24 then DateDiff(hh,@timeCreated,@timeresponded) + 24else DateDiff(hh,@timeCreated,@timeresponded) end) 
update dbo.finalextract set [email protected] 
Смежные вопросы