【发布时间】:2015-10-02 14:40:55
【问题描述】:
我在下面有以下查询,它根据日期差异计算一定数量。但是,由于错误,我无法执行查询:
消息 8114,第 16 级,状态 5,第 7 行
将数据类型 varchar 转换为数值时出错。
查询:
declare @var1 datetime
declare @var2 datetime
set @var1 = '2015-07-14 13:31:43.797'
set @var2 = '2015-07-14 13:31:43.797'
select
'Reefer' =
case
when DATEDIFF (hh,@var1,@var2) <= 6 and DATEDIFF (hh, @var1, @var2) > 0
then 429.000
else
case
when (DATEDIFF (hh,@var1,@var2) % 6) > 0
then 429.00 * ((DATEDIFF (hh,@var1,@var2) / 6)+ 1)
else 'wut'
end
end
from
container con
inner join
containerdetail cod on con.containernumber = cod.containernumber
left join
dea on dea.containernumber = con.containernumber
where
con.billofladingnumber = 'IMPJCP07140003'
【问题讨论】:
-
这个错误发生在哪一行?
-
准确来说,错误信息是:“Msg 8114, Level 16, State 5, Line 7 Error convert data type varchar to numeric。”
-
我认为问题出在 'wut'
-
注意 datediff 和 hours,它可能并不明显,但 11:59 和 12:00 之间的差异是 1。
标签: sql sql-server datetime stored-procedures