0

我一直在寻找,但没有找到我的答案,如果这个问题是重复的,请原谅我。

我有一个 .Net C# 应用程序,它使用实体框架 (EF) 与 SQL Server 数据库进行通信。我正在转换大量数据,我需要确保我的日期是有效的 SQL Server 日期时间类型。我的 POCO 类对日期使用 datetime2 类型,因此在 SQL Server 数据库中实际尝试插入之前,日期“0201-04-11 13:00:00 PM”是有效的。我试图将 DateTime.TryParseExact 与这样的东西一起使用......

if (DateTime.TryParseExact(legacyRecord.date_paid.ToString(), "M/d/yyyy hh:mm:ss tt", new CultureInfo("en-us"), DateTimeStyles.None, out datePaid))
{
   // Load record into lease payment table table
   LoadLeasePayment loadLeasePayment = new LoadLeasePayment();
   Decimal LeasePaymentId = loadLeasePayment.AddRecord(prodLeaseId, legacyRecord.amount_paid, datePaid, prodContext, loadDate);
}

我确信解决方案是显而易见的,但我无法只见树木不见森林。任何帮助深表感谢。

4

1 回答 1

0

解析字符串 DateTime 值后,您需要验证它是否在目标 SQL 数据类型的范围内。SqlDateTime 结构包括静态 MinValue 和 MaxValue 字段来促进这一点。

if (DateTime.TryParseExact(legacyRecord.date_paid.ToString(), "M/d/yyyy hh:mm:ss tt", new CultureInfo("en-us"), DateTimeStyles.None, out datePaid))
{
    if((datePaid >= SqlDateTime.MinValue) && (datePaid <= SqlDateTime.MaxValue))
    {
        // Load record into lease payment table table
        LoadLeasePayment loadLeasePayment = new LoadLeasePayment();
        Decimal LeasePaymentId = loadLeasePayment.AddRecord(prodLeaseId, legacyRecord.amount_paid, datePaid, prodContext, loadDate);
    }
}
于 2017-02-05T19:00:22.023 回答