0

SQL データベースを更新しようとすると、次のエラーが発生します。

SqlDateTime オーバーフローは 1/1/1753 12:00:00 AM から 12-31-9999 11:59:59 PM の間でなければなりません

SQLでは、UP_DATEフィールドをに設定していますdatetime2(0)

以下は私のクラスのセットアップです。この質問を短くするために、いくつかの情報を削除しました。

Public Class Riders
Private m_RIDER_NO As Integer
Private m_UP_DATE As Date

Public Property UP_DATE() As Date
    Get
        Return m_UP_DATE
    End Get
    Set(ByVal value As Date)
        m_UP_DATE = value
    End Set
End Property

私の更新機能コードでは:

If IsDate(newRider.UP_DATE) Then
        updateCommand.Parameters.AddWithValue("@NewUP_DATE", newRider.UP_DATE)
 Else
        updateCommand.Parameters.AddWithValue("@NewUP_DATE", DBNull.Value)
End If

クラスを以下に変更すると、更新を除くSTRING sqlとして正常に動作します。

Private m_UP_DATE As String

Public Property UP_DATE() As String
    Get
        Return m_UP_DATE 
    End Get
    Set(ByVal value As String)
        m_UP_DATE = value
    End Set
End Property
  1. これが例外的かどうか、または後で問題が発生するかどうかは誰でも知っています。
  2. UP_DATE フィールドを VB で文字列に設定し、SQL で datetime2(0) として設定した場合、更新以外に SQL を使用するのはなぜですか。
4

1 に答える 1

0

Date日付に .NET 文字列を使用することは、データ型の既定の日付の問題を回避するための優れた方法です。また、SQL Server は、データを失うことなく変換できるすべてのデータ型を受け入れます。文字列を日付に変換することは問題ありません。

于 2013-02-23T22:18:36.100 に答える