【问题标题】:Is there any difference between DateTime in c# and DateTime in SQL server?c# 中的 DateTime 和 SQL server 中的 DateTime 有什么区别吗?
【发布时间】:2010-11-13 23:28:04
【问题描述】:

c#中的DateTime和SQL server中的DateTime有区别吗?

【问题讨论】:

    标签: c# sql-server datetime


    【解决方案1】:

    精度和范围(所以,一切都很重要;-p)

    来自 MSDN:

    .NET System.DateTime

    DateTime 值类型表示日期和时间,其值范围从 0001 年 1 月 1 日午夜 12:00:00 到公元 9999 年 12 月 31 日 (CE) 晚上 11:59:59 之间

    时间值以 100 纳秒为单位,称为滴答声,特定日期是 GregorianCalendar 日历中自公元 001 年 1 月 1 日午夜 12:00 以来的滴答声数

    Transact SQL datetime

    日期范围:1753 年 1 月 1 日至 9999 年 12 月 31 日

    精度:四舍五入到 0.000、0.003 或 0.007 秒的增量

    【讨论】:

    • 太棒了!我想在 c# 中编写一个函数,该函数获取字符串类型的参数并将其转换为 datetime 。我想将函数的返回值保存到数据库中。该函数应该处理一个空字符串,在这种情况下它应该返回 null。但是不能插入null。怎么了?
    • 可能只是需要在.NET代码中使用DBNull.Value来表示数据库空值。
    • 还有时区方面 - 即使 DateTime 没有关联的时区,它可以知道它是“本地”还是 UTC。
    【解决方案2】:

    您也可以使用 SQL Server 2008 的 datetime2。精度也是 100ns。事实上,它是为了匹配 .NET DateTime 精度而引入的。

    datetime2 (Transact-SQL)

    【讨论】:

    • 注意:这是默认的 datetime2 精度(可以降低到秒精度)。
    【解决方案3】:

    是的。

    SQL 日期时间类型的 C# 等效项是 SqlDateTime

    因此,定义 SQL 调用(当然是带有参数集合的存储过程)以使用 SQLDateTime。优点是您可以在构建命令时捕获任何溢出或超出范围的错误,而不是在执行时从数据库引擎中捕获。

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 2021-01-19
      • 2013-07-01
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多