バックエンドにトランザクション日付の日時フィールドがあります。だから私は、以下の形式で、フロントのC#.NETからその日を渡しています:C#からsqlバックエンドに任意の日付形式を渡すには
プレゼンテーション層:
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
PropertyClass prp=new PropertyClass();
Prp.TransDate=Convert.ToDateTime(date);
PropertyClass構造を:
2011-01-01 12:17:51.967
は私が書かれているこれを行うには
Public class property
{
private DateTime transdate;
public DateTime TransDate
{
get
{
return transdate;
}
set
{
transdate = value;
}
}
}
DALレイヤーから次のようにTransactionDateを渡します。
Cmd.Parameters.AddWithValue("@TranSactionDate”, SqlDbType.DateTime).value=propertyobj.TransDate;
presntation層からデバッグ中:この中
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
/私は正しい予想される日付の形式を取得していますが、デバッグが再びこのライン
Prp.TransDate=Convert.ToDateTime(date);
になると、日付形式は1に変更1/2011。
しかし、私のバックエンドのSQLのdatefieldは、日付のパラメーターが2011-01-01 12:17:51.967の形式でなければ、例外の無効な日付形式をスローします。
注:
System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. at System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) at System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime value) at System.Data.SqlTypes.SqlDateTime..ctor(DateTime value) at System.Data.SqlClient.MetaType.FromDateTime(DateTime dateTime, Byte cb) at System.Data.SqlClient.TdsParser.WriteValue(Object value, MetaType type, Byte scale, Int32 actualLength, Int32 encodingByteSize, Int32 offset, TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc)
「DateTime」の値には書式はありません。このフォーマットは、 'DateTime'を' string'に変換するときだけ有効です。 – Gabe
私はトランザクションの日付をDALに渡すときには "propertyobj.TransDate"を使用していますが、他の場所では "Prp.TransDate"を参照しています。これは実際にコード内にあるのでしょうか、あなたの質問を構成するときに間違ったエラーですか? – MartW