我想在我的SQL中查看前3个月的会话小时数(hrs
列声明为nvarchar
),如果我想查看数据,则需要将数据转换为浮点数最近3个月,但我得到了一些错误将nvarchar转换为在SQL Server中浮动时出错
SELECT sum(convert(float, hrs))
FROM companysonvinunitvenue
WHERE date >= DATEADD(day, -90, GETDATE())
错误:
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to float.
SELECT sum(cast(hrs as float))
FROM companysonvinunitvenue
WHERE date >= DATEADD(day, -90, GETDATE())
错误:
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to float.
SELECT CAST(CAST (hrs AS NUMERIC(19,4)) AS INT)
FROM companysonvinunitvenue
WHERE date >= DATEADD(day, -90, GETDATE())
错误:
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to numeric.
SELECT CAST(CAST (hrs AS int) AS INT)
FROM companysonvinunitvenue
WHERE date >= DATEADD(day, -90, GETDATE())
错误:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '02:00:00 ' to data type int.
我想这四种方式,并在所有的人都失败了,我需要怎么做呢?
如果'hrs'表示** **时间 - 那么为什么地球上被它定义为'nvarchar'?修正你的有缺陷的设计 - 如果它**是一个数值,那么它**也需要被存储**。我会避免因其不精确性而使用“float”,而使用“decimal(p,s)” –