请教,不允许从数据类型 datetime 到 int 的隐式转换…
请问,不允许从数据类型 datetime 到 int 的隐式转换……
我以执行以下SQL语句时
insert into 总表变更记录 select * from 总表 Where ID In (2679,2697)
出现下面的错误提示:
不允许从数据类型 datetime 到 int 的隐式转换。请使用 CONVERT 函数来运行此查询。
。请使用 CONVERT 函数来运行此查询。
ID in (其它id号) 也是一样的提示,我检查了一下,
1.两个表的字段数量相同,字段名称相同,各字段的数据类型是完全相同的,
2.“总表”中的ID列是唯一的,“总表变更记录”中的ID列不是唯一 的
3.“总表”中数据类型为datetime的各字段中,有datetime,date和null三类内容
4.”总表“中数据类型为int的各字段中,有整数和null两类内容
请问,以上错误可能是什么原因导致的?谢谢!
------解决方案--------------------
初步估计你用了*号,导致insert into和select的时候列错位,本身是datetime类型的你用了int来插入。也或者你的列没错位但是类型不能直接转换
------解决方案--------------------
有自增列吗?不管有没有,还是建议比较老实的写
INSERT INTO TA(COL1,COL2...) SELECT COL1,COL2... FROM TB
前后字段一一对应 这样就可以很快查出是哪里有问题了
------解决方案--------------------
错误提示已经很明显了,估计是列没对上吧
------解决方案--------------------
请将以上语句 放到 ssms的 查询快捷方式中(比如: Ctrl+4)
新建查询窗口选中表名,ctrl+4 一下,相关的表结构, insert脚本就出来了。。
------解决方案--------------------
明显就是列对错了吧……建议还是指明要插入的列
我以执行以下SQL语句时
insert into 总表变更记录 select * from 总表 Where ID In (2679,2697)
出现下面的错误提示:
不允许从数据类型 datetime 到 int 的隐式转换。请使用 CONVERT 函数来运行此查询。
。请使用 CONVERT 函数来运行此查询。
ID in (其它id号) 也是一样的提示,我检查了一下,
1.两个表的字段数量相同,字段名称相同,各字段的数据类型是完全相同的,
2.“总表”中的ID列是唯一的,“总表变更记录”中的ID列不是唯一 的
3.“总表”中数据类型为datetime的各字段中,有datetime,date和null三类内容
4.”总表“中数据类型为int的各字段中,有整数和null两类内容
请问,以上错误可能是什么原因导致的?谢谢!
------解决方案--------------------
初步估计你用了*号,导致insert into和select的时候列错位,本身是datetime类型的你用了int来插入。也或者你的列没错位但是类型不能直接转换
------解决方案--------------------
有自增列吗?不管有没有,还是建议比较老实的写
INSERT INTO TA(COL1,COL2...) SELECT COL1,COL2... FROM TB
前后字段一一对应 这样就可以很快查出是哪里有问题了
------解决方案--------------------
错误提示已经很明显了,估计是列没对上吧
------解决方案--------------------
exec sp_executesql N' IF OBJECT_ID(''tempdb..#t'') IS NOT NULL BEGIN DROP TABLE #t END DECLARE @objId INT=0 DECLARE @schmName NVARCHAR(766)=''''; DECLARE @tableNameOfNotSchm NVARCHAR(766)=''''; SELECT @objId=obj.OBJECT_ID,@tableNameOfNotSchm=obj.name,@schmName=schm.name FROM sys.objects obj LEFT JOIN sys.schemas schm ON schm.[schema_id]=obj.[schema_id] WHERE obj.object_id = object_id(@TableName) ;with t AS ( SELECT a.colorder as [序号] ,schm.name AS [架构] , a.name as [名称] ,''[''+a.name+'']'' as [名称2] ,r1.desction [注释] , 是否主键=case when exists(SELECT 1 FROM sysobjects where xtype=''PK'' and name in (SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then ''yes'' else ''no'' END , [是否自增]=case when COLUMNPROPERTY( a.id,a.name,''IsIdentity'')=1 then ''yes''else ''no'' end , 类型=b.name , [长度Length]=a.length , 字符长度=COLUMNPROPERTY(a.id,a.name,''PRECISION'') , 小数位数=isnull(COLUMNPROPERTY(a.id,a.name,''Scale''),0) , 是否为NULL=case when a.isnullable=1 then ''yes''else ''no'' end , 缺省值=isnull(e.text,'''') , a.collation as [排序字符集] FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and (d.xtype=''U'' or d.xtype=''V'') and d.name<>''dtproperties'' left join syscomments e on a.cdefault=e.id INNER JOIN sys.objects obj ON obj.[object_id]=d.id LEFT JOIN sys.schemas schm ON schm.[schema_id]=obj.[schema_id] OUTER APPLY( SELECT STUFF(( SELECT '';''+aac.name+'':''+CONVERT(NVARCHAR(MAX),aac.value) FROM sys.fn_listextendedproperty (NULL, ''SCHEMA'',schm.name, ''table'', d.name, ''column'', a.name) aac FOR XML PATH('''') ),1,1,'''') AS desction )r1 where d.id=@objId )SELECT * INTO #t FROM t;;WITH t1 AS ( SELECT ( stuff((SELECT '',[''+[名称]+'']'' FROM #t t ORDER BY t.[序号] FOR XML PATH('''')),1,1,'''')) AS Results), t2 AS (SELECT ( stuff((SELECT '',''+[名称] FROM #t t WHERE t.是否自增!=''yes'' ORDER BY t.序号 FOR XML PATH('''')),1,1,'''')) AS Results),t3 AS (SELECT ( stuff((SELECT '',[''+[名称]+'']'' FROM #t t WHERE t.是否自增!=''yes'' ORDER BY t.序号 FOR XML PATH('''')),1,1,'''')) AS Results) ,t4 AS ( SELECT TOP 1 ''((SELECT ISNULL(MAX(ocxa.[''+t.[名称]+'']),0) FROM ''+@TableName+'' ocxa)+ROW_NUMBER() OVER ( ORDER BY GETDATE())) AS rId'' AS Results FROM #t t WHERE t.[是否主键]=''yes'' and t.[是否自增]=''no'') SELECT * FROM t1 UNION ALL SELECT ''INSERT INTO ''+@schmName+''.''+@tableNameOfNotSchm+'' (''+t2.Results+'') VALUES ('''''''')'' FROM t2 UNION ALL SELECT ''INSERT INTO [''+@schmName+''].[''+@tableNameOfNotSchm+''] (''+t3.Results+'') VALUES ('''''''')'' FROM t3 UNION ALL SELECT t4.Results FROM t4 ; SELECT * FROM #t t ORDER BY t.[序号];',N'@TableName nvarchar(766)',
请将以上语句 放到 ssms的 查询快捷方式中(比如: Ctrl+4)
新建查询窗口选中表名,ctrl+4 一下,相关的表结构, insert脚本就出来了。。
------解决方案--------------------
明显就是列对错了吧……建议还是指明要插入的列