【问题标题】:SQLDateTime OverFlow with Correct DateTime Format具有正确日期时间格式的 SQLDateTime 溢出
【发布时间】:2019-12-20 07:05:27
【问题描述】:

下面是我的代码 sn-p,我在其中将 DateTime 值插入 SQL 数据库并遇到以下错误:

System.Data.SqlTypes.SqlTypeException:SqlDateTime 溢出。一定是 在 1753 年 1 月 1 日凌晨 12:00:00 到 9999 年 12 月 31 日晚上 11:59:59 之间。

deliveryCart.DeliveryDate = (DateTime)row.DeliveryDate;

Log.SaveLog(ConfigurationManager.AppSettings["LogFilePath"] + @"\Log.txt", "deliveryCart.DeliveryDate: " + deliveryCart.DeliveryDate.ToString());
//*value retrieved is 12/31/2019 12:00:00 AM

dataContext.Q_TBL_SUBMITTED_DELIVERY_CARTs.InsertOnSubmit(deliveryCart);

我可以知道是否有要使用的格式吗?当转换row.DeliveryDate的值时?

【问题讨论】:

标签: c# sql linq datetime


【解决方案1】:

其实问题是SQL DateTime =/= C# Datetime

你需要改变两件事

  • 数据库将字段类型从DateTime改为DateTime2

  • 您需要明确的查询

您可以找到更多信息here,herehere

【讨论】:

    【解决方案2】:

    如果您使用 dateTime.toString(),则需要确保字符串的格式为:

    deliveryCart.DeliveryDate.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
    

    此外,DateTime 是一种值类型,而不是引用类型。所以,它不能为空。如果未初始化,值类型的值为 0。对于 Datetime,它可以是 DateTime.MinValue,它在 Sql Server 的值之外。

    【讨论】:

    • 您不应将该日期值作为 string 传递给 SQL,而应作为某种日期类型的参数(的 DateTime 值)。所以不需要格式化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多