Я пытаюсь перевести неделю из даты на основе моих критериев.
Условие моей даты: если мои @date
меньше 4 AM
, то @date - 1
, иначе @date
declare @dates datetime
set @dates = '2019-01-01 03:59:59'
select
case
when convert(varchar(26), @dates, 108) <= '04:00:00'
then convert(varchar, dateadd(day, -1, @dates), 103)
else convert(varchar, @dates, 103)
end BusinessDate
Выход:
31/12/2018 // as expected
Теперь я хочу найти номер недели для выходных данных. Поэтому я попытался
declare @dates datetime
set @dates = '2019-01-01 03:59:59'
select
case
when convert(varchar(26), @dates, 108) <= '04:00:00'
then convert(varchar, dateadd(day, -1, @dates), 103)
else convert(varchar, @dates, 103)
end BusinessDate,
case
when convert(varchar(26), @dates, 108) <= '04:00:00'
then datepart(week, convert(datetime, convert(varchar, dateadd(day, -1, @dates), 103)))
else datepart(week, convert(datetime, convert(varchar, @dates, 103)))
end weeks
Но я получаю эту ошибку:
Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.