Sql server SQL Server数据插入
我有此查询(从其他服务器转储) 但是当执行它时,它有这个错误 [Err]42000-[SQL Server]不允许从数据类型varbinary隐式转换为时间。使用CONVERT函数运行此查询Sql server SQL Server数据插入,sql-server,Sql Server,我有此查询(从其他服务器转储) 但是当执行它时,它有这个错误 [Err]42000-[SQL Server]不允许从数据类型varbinary隐式转换为时间。使用CONVERT函数运行此查询 如何修复它?您在“时间”字段的表格中输入的值无效 使用Cast(值为时间)转换为时间 INSERT INTO [Reservation_reserve_room] VALUES (N'1', N'1', N'1', N'Monday Room Sermmit', N'2012-03-12', cast(0x
如何修复它?您在“时间”字段的表格中输入的值无效 使用
Cast(值为时间)
转换为时间
INSERT INTO [Reservation_reserve_room] VALUES (N'1', N'1', N'1', N'Monday Room Sermmit',
N'2012-03-12', cast(0x30373A30303A30302E30303030303030 as Time),
CAST( 0x30383A30303A30302E30303030303030 as Time));
我知道SQL中接受的时间格式始终是“2012年3月12日”。
此格式适用于许多DB类型,不会混淆日期和月份。使用
转换
CONVERT(TIME, CONVERT(BIGINT, 0x30373A30303A30302E30303030303030))
或者干脆
CONVERT(TIME, 0x0000E0FF01E0FF01E0FF01E0FF01E0FF0100000000)
INSERT INTO [Reservation_reserve_room] VALUES (N'1', N'1', N'1', N'Monday Room Sermmit', N'2012-03-12', CONVERT(time, 0x30373A30303A30302E30303030303030)
, CONVERT(time, 0x30373A30303A30302E30303030303030));
请在使用时阅读本文档
CONVERT(time,CONVERT(varchar,0x30373A30303A30302E30303030303030))
祝您好运“如何修复?”-使用转换函数…使用转换函数运行此查询。
。简单。什么是0x30373A30303A330302E30303033030
?毫秒、秒或其他?当您插入INT
列时-只需使用数值,例如1
-不要将您的数字转换为NVARCHAR
字符串(N'1'
),然后再返回-无需任何费用。。。。。另外:如果在VARCHAR
列中插入(room_name
)-不要使用N'.
前缀-同样,首先转换为NVARCHAR
(为什么?),然后SQL Server需要转换回VARCHAR
,因为这是列数据类型…..问题是如何修复它,不是他们为什么会出错。这真的不值得投否决票,知道错误发生的原因是纠正错误和理解解决方案的第一步。@Ash Burlaczenko,请告诉我如何将无效的datetime从代码转换为有效的datetime。出现错误:从字符串转换日期和/或时间时转换失败。请在有有效数据时尝试查询。请告诉我们此数据的来源。我发现将表达式转换为数据类型datetime时出现算术溢出错误。
什么是0x30373A30303A330302E30303030303030。在第二个/新查询中,当将datetime从binary/varbinary字符串转换为datetime时,它抛出转换失败。
是否确定存储在0x30373A30303A330302E30303033030是datetime?请参见编辑后的答案..我已将datetime更改为时间数据类型我从binary/varbinary字符串转换datetime时获得的转换失败。但我在发布它之前测试了它,它正常工作!我在MS SQL SERVER 2008 R2上进行了测试。
CONVERT(time,CONVERT(varchar,0x30373A30303A30302E30303030303030))