0

我正在为 sql server azure 使用 nodemssql 包

场地

时间(7)

>   RecurrenceType.columns.add('StartTime', mssql.Time(7));
>   RecurrenceType.columns.add('EndTime', mssql.Time(7));

价值观

Start time : '01:01'

End time   : '13:01'

存储在数据库中:

StartTime           EndTime
00:00:00.0000000    00:00:00.0000000

请建议如何使用 nodemssql 包将值存储在 time(7) 字段中并具有确切的值

传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。表值参数 3 (""),第 1 行,第 4 列:数据类型 0x29 的数据长度或元数据长度无效

4

1 回答 1

0

富尔坎,

只要您的表列配置为 TIME(7),您就应该能够直接将任何时间字符串插入到列中,其精度高达并包括 9:

DECLARE @TimeString varchar(50) = '09:47:11.455651236'
DECLARE @TimeFormat AS time(7) = @TimeString
PRINT @TimeString
PRINT @TimeFormat

这显然是如果提供的字符串在“hh:mi:ss.mmmmmmmmm”中。如果字符串以除此以外的任何格式提供或超过 9 的精度,则插入/更新将失败,并显示:

消息 241,级别 16,状态 1,从字符串转换日期和/或时间时转换失败。

如果恰好符合时间字段要求,则需要相应地修改时间字符串。

于 2018-06-07T16:02:56.537 回答