我可以存储大于24小时的VB时间跨度的数据类型是什么? 以下内容不会保存为SQL时间跨度值。
Dim span As TimeSpan = New TimeSpan(1, 2, 0, 30, 0)
输出
1.02:00:30
我希望以后能够对此进行计算。
SqlDbType.Time溢出。值'1.02:00:30'超出范围。必须在00:00:00.0000000和23:59:59.9999999之间。
这个Fiddler示例显示了我的结果,我想将结果存储在SQL数据库中。
http://sqlfiddle.com/#!3/c7b0d/53
答案 0 :(得分:0)
我最初建议使用SQL Server 2008" datetimeoffset"数据类型,但这是错误的。
正如之前的评论所指出的那样,SQL Server中目前没有自然存储和处理时间跨度值的数据类型。
最简单的替代方法是将偏移量存储为浮点值,整数部分表示天数,小数部分表示当天的部分。这将允许简单的计算。数学可以按如下方式完成:
select
getdate(), -- Current datetime
CONVERT(date, getdate()), -- Current date
CONVERT(datetime, CONVERT(date, getdate())) +1, -- Add one day
CONVERT(datetime, CONVERT(date, getdate())) +1.75 -- Add a day + 3/4 or 18 hours
getdate() + .75, -- Current Time + 18 hours.
getdate() + (3/4) -- Current Time + 18 hours.
注意:您只能使用[datetime]数据类型执行此类日期时间数学运算。因此需要将[date]数据类型转换回[datetime]。