sql >> データベース >  >> RDS >> Sqlserver

エラー-SqlDateTimeオーバーフロー。 1/1/175312:00:00AMから12/31/999911:59:59PMの間にある必要があります

    DateTime C#では、値型であり、参照型ではないため、nullにすることはできません。ただし、定数DateTime.MinValueにすることもできます。 これは、SQLServerのDATETIMEの範囲外です。 データ・タイプ。

    値の型は、常に明示的に設定する必要がなく、常に(デフォルトの)値(ゼロ)を持つことが保証されています(この場合はDateTime.MinValue)。

    結論として、データベースに渡そうとしているDateTime値が設定されていない可能性があります。

    DateTime.MinValue = 1/1/0001 12:00:00 AM
    DateTime.MaxValue = 23:59:59.9999999, December 31, 9999, 
                        exactly one 100-nanosecond tick 
                        before 00:00:00, January 1, 10000
    

    MSDN: DateTime.MinValue

    SQLServerについて

    MSDN:SQLServerのDateTimeとSmallDateTime

    最後に、C#DateTimeを渡した場合 SQLへの文字列として、最大の精度を維持し、SQLサーバーが同様のエラーをスローしないように、次のようにフォーマットする必要があります。

    string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
    

    更新(8年後)

    SQL DateTime2の使用を検討してください .net DateTimeとの整合性が高いデータ型 日付範囲0001-01-01 through 9999-12-31 時間範囲00:00:00 through 23:59:59.9999999

    string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
    

    MSDN datetime2(Transact-SQL)



    1. 2つのテーブルを結合しながらクエリを更新しますか?

    2. 一時パスワードを自動的に生成した後、MySQLにアクセスできません

    3. 引用符付きのPythonおよびMySQLクエリ

    4. PHPメールのダイナミックHTMLテーブル