declare @i numeric(38)
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60) 报错:
服务器: 消息 206,级别 16,状态 2,行 3
操作数类型冲突: int 与 void type 不兼容
服务器: 消息 206,级别 16,状态 1,行 3
操作数类型冲突: int 与 void type 不兼容
服务器: 消息 8117,级别 16,状态 1,行 3
操作数数据类型 numeric 无效(运算符 modulo)。
服务器: 消息 8117,级别 16,状态 1,行 3
操作数数据类型 numeric 无效(运算符 modulo)。
当如果@i 为bigint或int类型则可以。由于我们当前的字段类型是numeric(38),如何正确的转换时分秒的格式呢?多谢!
解决立即给分!
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60) 报错:
服务器: 消息 206,级别 16,状态 2,行 3
操作数类型冲突: int 与 void type 不兼容
服务器: 消息 206,级别 16,状态 1,行 3
操作数类型冲突: int 与 void type 不兼容
服务器: 消息 8117,级别 16,状态 1,行 3
操作数数据类型 numeric 无效(运算符 modulo)。
服务器: 消息 8117,级别 16,状态 1,行 3
操作数数据类型 numeric 无效(运算符 modulo)。
当如果@i 为bigint或int类型则可以。由于我们当前的字段类型是numeric(38),如何正确的转换时分秒的格式呢?多谢!
解决立即给分!
解决方案 »
- 统一字段合并问题,分组合并,求一个SQL Function
- [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]一般性网络错误。请检查网络文档
- 连接数据库出错了 大家帮帮我啊
- 这个外连接怎么写?
- 简单的sql问题,在线等,有答案的直接给分!
- SQL 基础
- sql-server转换为ACCESS咱转
- SQL语句写法
- 有关SQL的几个问题请教。。。
- 有一个表,其中有两个字段,Make 其值取值从1 - 10,tDate 为时间 ,现在想要查询每天make中大于7的记录占每天总记录数的百分比, 能不能用一
- 字段类型为numeric(38),如何正确的转换时分秒的格式
- |zyciis| 一条表对表更新语句要怎么写,谢谢
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60) /*
-----------------------------
2759.818055:49.083333:5(1 row(s) affected)
*/
set @i=9935345
select ltrim(cast(@i as int)/3600)+':'+ltrim((cast(@i as int)%3600)/60)+':'+ltrim(cast(@i as int)%60)
服务器: 消息 8115,级别 16,状态 2,行 3
将 expression 转换为数据类型 int 时发生算术溢出错误。
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60)
set @i=9935345
select ltrim(cast(@i as bigint)/3600)+':'+ltrim((cast(@i as bigint)%3600)/60)+':'+ltrim(cast(@i as bigint)%60)
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60)
/*
2759:49:5
*/
set @i=9935345455555555555555555555555555
select parsename(ltrim(@i/3600),2)+':'+parsename(ltrim(@i%3600/60),2)+':'+ltrim(@i%60)
--2759818182098765432098765432098:45:55
declare @i numeric(38)
set @i=9935345
select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60)
也是在sqlserver2005/2008上没问题。我的是sqlserver2000所以还是不行,报一样的错。
set @i=9935345455555555555555555555555555
select ltrim(floor(@i/3600))+':'+ltrim(floor((@i%3600)/60))+':'+ltrim(@i%60)
set @i=993534545555555555555555555555555
--select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60)
select
ltrim(cast(@i/3600 as varchar(100)))
+':'+cast(ceiling(cast('0.'+parsename(cast(@i/3600 as varchar(100)),1) as numeric(38,10))*3600)/60 as varchar(100))
+':'+cast(ceiling(cast('0.'+parsename(cast(@i/60 as varchar(100)),1) as numeric(38,10))*60) as varchar(100))
将 expression 转换为数据类型 numeric 时发生算术溢出错误。