2015-07-12 3 views
0

я получаю следующее исключение:Конверсия удалась при преобразовании даты и/или времени из символьной строки, когда конвертированы часы

преобразования не удалось при преобразовании даты и/или времени от характера строки

в этом заявлении:

select CAST(RIGHT('0' + CAST(overtimeHours as varchar(2)), 2) + ':00:00' As Time) 
from #GPilot; 

Примечание: это происходит, когда overtimeHours = 24

ответ

2

Это потому, что '24: 00: 00 'недействительно. Используйте по модулю усечения, что:

SELECT CAST(RIGHT('0' + CAST((overtimeHours % 24) AS varchar(2)), 2) + 
    ':00:00' As Time) FROM #GPilot; 
1

Там нет 24:00:00 часов. вы должны проверить, равно ли 24, и если да, верните 00:00:00 и добавьте день к части даты (если у вас есть дата) или измените на 23:59:59 или просто используйте modulo, как в Amit's answer. Правильная вещь, которую нужно сделать, зависит от более широкого контекста, который вы не разделяли в своем вопросе.

Смежные вопросы

 Смежные вопросы