请教,不允许从数据类型 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
前后字段一一对应 这样就可以很快查出是哪里有问题了
------解决方案--------------------
错误提示已经很明显了,估计是列没对上吧
------解决方案--------------------

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脚本就出来了。。
------解决方案--------------------
明显就是列对错了吧……建议还是指明要插入的列