0

我有这个查询(从另一台服务器转储)

CREATE TABLE [Reservation_reserve_room] (
  [id] int NOT NULL ,
  [reservation_id] int NULL ,
  [room_id] int NULL ,
  [room_name] varchar(255) NULL ,
  [reserve_date] date NULL ,
  [reserve_time_start] time(7) NULL ,
  [reserve_time_end] time(7) NULL 
)

INSERT INTO [Reservation_reserve_room] 
VALUES (N'1', N'1', N'1', N'Monday Room Sermmit', N'2012-03-12', 0x30373A30303A30302E30303030303030, 0x30383A30303A30302E30303030303030);

但是当执行它时,它有这个错误

[Err] 42000 - [SQL Server] 不允许将数据类型 varbinary 隐式转换为 time。使用 CONVERT 函数运行此查询。

我如何解决它?

4

4 回答 4

1

利用

CONVERT(time,CONVERT(varchar,0x30373A30303A30302E30303030303030))

祝你好运

于 2012-05-16T10:40:44.420 回答
0

您在时间字段中输入到表中的值无效。

用于Cast(Value as Time)转换为时间

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));
于 2012-05-16T10:27:50.813 回答
0

我知道在 SQL 中接受的时间格式始终是“2012 年 3 月 12 日”。这种格式适用于许多数据库类型,并且不会混淆日期和月份数字。

于 2012-05-16T10:28:40.940 回答
0

利用CONVERT

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));

在MSDN上阅读此文档

于 2012-05-16T10:30:47.243 回答