-2

日付形式の文字列 (yyyy-MM-dd) を抽出し、それをに変換してDateTime、ストアド プロシージャを使用してデータベースに挿入しています。しかし、私は得続けます

System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

私のテーブルの列のタイプはdateです。

2016-01-15呼び出して文字列 (例: ) を変換し、DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null)その値を取得してそれをパラメーターとして StoredProcedure に挿入し、proc を実行します。

しかし、デバッガーを使用すると、戻り値が実際にはフォーマットされたyyyy-MM-dd HH:mm:ssDateTime であることがわかります。

これは、コードがどのように見えるかの例です

string expirationDate = GetDate();
DateTime date = DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null);

ExecuteMyStoredProc(date);
4

4 に答える 4

0

最初にコードで意味のある日付値を取得します:

DateTime myDate = DateTime.ParseExact(expirationDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)

myDateただし、 DateTime オブジェクトとして、デバッガーで時刻値を取得する可能性があります。

あなたのSPは次の問題です。次のように変更します。

INSERT INTO MyTable (MyDate) Values (Convert(DateTime,@expiration_date,111)) --yyyy/mm/dd

SQL Server の変換コードはここにあります。

于 2014-01-28T09:41:15.253 に答える