[英]Type to store time in C# and corresponding type in T-SQL
我想知道如何在 C# 和 T-SQL 中存储时间。 我知道它们都提供了DateTime类型,但我只需要存储一个time 。 例如:
var startTime = 9PM;
var endTime = 10PM;
然后从数据库中存储/检索这些值。 提前致谢。
弗朗切斯科
是否使用 C# 中的DateTime
或TimeSpan
类型来存储9 PM
取决于您的喜好。 就个人而言,我会使用DateTime
,将日期组件留空,因为这在语义上更接近您想要的。 ( TimeSpan
旨在保存时间间隔,例如“21 小时”。)
该文档支持这两个选项。 这是来自TimeSpan 的文档:
TimeSpan 结构也可用于表示一天中的时间,但前提是时间与特定日期无关。
另一方面,MSDN 文章在 DateTime、DateTimeOffset 和 TimeZoneInfo 之间选择提到以下内容:
DateTime 结构适用于执行以下操作的应用程序:
* 仅使用日期。
* 仅使用时间。
[...]
SQL 服务器具有time
数据类型。
在 C# 中,没有一个类型只能保存一次。 有TimeSpan
,但它旨在保留一段时间,而不是DateTime
的真正组成部分(即小时和分钟)。
从 SQL Server 2008 开始,有一个time
类型(使用日期和时间数据)只存储一个时间组件。
编辑:起初误读了您的问题。 TimeSpan
正是您正在寻找的,它可以使用 SQL 2K8 存储在time
类型中。
c# 中的时间跨度是您操纵时间间隔的方式。 与其他海报所说的相反,我认为时间数据类型对于在 SQL 中存储时间间隔是不正确的,除非您实际上想要存储开始时间和结束时间而不是时间间隔(即在您的示例中为 1 小时) . 它用于存储一天中的时间,有点像 DateTime 但没有日期。 当我想在 SQL 中存储一个时间间隔时,我只使用一个 int 然后让它代表一个适合我想要做的时间单位(例如分钟、秒、毫秒等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.