我正在尝试根据我的条件转换日期的星期。
我的约会条件:如果我的@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数据类型会导致超出范围的值。
答案 0 :(得分:1)
只需减去四个小时:
select datepart(week,
dateadd(hour, -4, @dates)
)