【问题标题】:Castle ActiveRecord - can I use the SQL Server 2008 "time" data type?Castle ActiveRecord - 我可以使用 SQL Server 2008“时间”数据类型吗?
【发布时间】:2011-05-19 22:07:48
【问题描述】:

我正在处理一个需要跟踪时间的项目,例如没有日期的“下午 2:15”。我正在使用 Castle ActiveRecord。有没有一种方法可以使用 Castle 属性指定我希望我的字段成为 SQL Server 2008 中的时间数据类型?如果是这样,我将创建什么 .NET 类型的字段?日期时间?

此外,我可能需要将时区附加到这些时间。使用 Castle ActiveRecord 和 SQL Server 2008 的最佳方法是什么?

【问题讨论】:

    标签: castle-activerecord


    【解决方案1】:

    根据MSDN docs,时间数据类型对应于TimeSpan .net 类型,NHibernate type 是“TimeAsTimeSpan”。在 ActiveRecord 中,您可以使用 ColumnType 属性来定义它,请参阅this example

    如果您想包含时区,我建议您改用 DateTimeOffset。我看不出时区在 TimeSpan 中有何意义...或者将时区存储在单独的字段中并自己进行转换...

    【讨论】:

    • 我可能会将时区保存在一个单独的字段中,只是根据每个时区的 .NET 名称存储为 varchar。但是对于时间本身,我尝试了 TimeSpan,但以这种方式存储它对我来说没有多大意义,因为 TimeSpan 是围绕时间长度而不是时钟时间设计的。
    • 经过更多的实验,我确实决定使用TimeSpan(转换为time数据类型)。主要障碍是在TimeSpan 和时间显示(如“2:00 PM”)之间来回转换。但如果我先在TimeSpan 字符串上调用DateTime.Parse,然后使用“t”格式,它似乎可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2011-04-23
    • 2021-08-15
    相关资源
    最近更新 更多