在 SQL 服务器中将 nvarchar 转换为 float 时出错
Error converting nvarchar to float in SQL Server
我想在我的SQL(hrs
列声明为nvarchar
)中查看前3个月的会话小时数,如果我需要将数据转换为float想查看最近 3 个月的数据,但出现一些错误
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.
这四种方法我都试过了,都失败了,我需要怎么做?
首先,使用 date and time data types 作为日期时间值。您将避免这些和许多其他麻烦,还可以节省磁盘 space、RAM、减少读取次数等。
至于你的问题。对于 Sql 服务器 2008+
DECLARE @companysonvinunitvenue TABLE (hrs NVARCHAR(10))
INSERT @companysonvinunitvenue VALUES ('02:00:00'),('21:31:03')
SELECT DATEPART(HOUR,CAST(hrs AS time))
FROM @companysonvinunitvenue
其他版本
DECLARE @companysonvinunitvenue TABLE (hrs NVARCHAR(10))
INSERT @companysonvinunitvenue VALUES ('02:00:00'),('21:31:03')
SELECT cast(LEFT(hrs,2) AS INT)
FROM @companysonvinunitvenue
我想在我的SQL(hrs
列声明为nvarchar
)中查看前3个月的会话小时数,如果我需要将数据转换为float想查看最近 3 个月的数据,但出现一些错误
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.
这四种方法我都试过了,都失败了,我需要怎么做?
首先,使用 date and time data types 作为日期时间值。您将避免这些和许多其他麻烦,还可以节省磁盘 space、RAM、减少读取次数等。
至于你的问题。对于 Sql 服务器 2008+
DECLARE @companysonvinunitvenue TABLE (hrs NVARCHAR(10))
INSERT @companysonvinunitvenue VALUES ('02:00:00'),('21:31:03')
SELECT DATEPART(HOUR,CAST(hrs AS time))
FROM @companysonvinunitvenue
其他版本
DECLARE @companysonvinunitvenue TABLE (hrs NVARCHAR(10))
INSERT @companysonvinunitvenue VALUES ('02:00:00'),('21:31:03')
SELECT cast(LEFT(hrs,2) AS INT)
FROM @companysonvinunitvenue