【发布时间】:2013-03-06 16:42:34
【问题描述】:
我可以存储什么数据类型超过 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
【问题讨论】:
-
SQL Server 没有区间数据类型,因此不清楚您要在这里做什么。数据库方面的一种常见方法是store intervals as integers,即滴答数、秒数或分钟数或您需要的任何粒度。然后,您可以在应用程序中随意格式化它。或者,您可以存储间隔的开始和结束时间。
-
用示例更新了帖子。
-
正如documentation 所说,
time数据类型存储一天中的某个时间,而不是一段时间(间隔)。因此,最好的选择可能是存储秒数,这使得计算变得容易。但是将秒数转换为特定的字符串格式以进行输出(这是您的 SQL Fiddle 所做的)通常应该在应用程序中完成,而不是在数据库中。 -
我同意你的看法,@Pondlife,你应该这样回答。
-
嗯,它是在代码中完成的,开头句子中所述的问题是“我可以将值存储为什么数据类型并仍然用它计算?”我确实了解时间类型的限制,错误清楚地说明了这一点。希望有一些想法或建议来实现目标。
标签: sql-server vb.net timespan