2

type でコマンド パラメーターを使用するとエラーが発生するsqldbtype.datatime

これが私が使用しているコードです

 cmd.Parameters.Add("@Posted_date", SqlDbType.DateTime).Value = Convert.ToDateTime(dt.Rows[i]["messagePostedDate"]);

エラーは「パラメーター値を文字列から DateTime に変換できませんでした」であり、dt.Rows[i]["messagePostedDate"] の値は「2008-10-01 00:00:00.000」です –

何が問題なのか誰か知っていますか?

4

4 に答える 4

1

問題は、SQL Server のログイン アカウントの言語が UI カルチャの言語と一致しないことです。

.NET は、渡された日付を SQL サーバーの日付形式に変換しようとしています。クライネットからの日付を文字列として送信しますが、クライアントのカルチャが SQL Server ログイン用に設定された既定の "言語" とは異なるため、変換できません。

これを解決するには、SQL Server セッションの言語を と一致させるset language xxxxxか、SQL Management Studio でのログインの言語を変更するか、SQL Server の既定の言語を変更する必要があります。

その後、動作するはずです。

于 2014-01-10T15:15:47.390 に答える
1

使用してみてください:

Convert.ToDateTime Method (String, IFormatProvider)

指定されたカルチャ固有の書式設定情報を使用して、指定された数値の文字列形式を等価の日付と時刻に変換します。

于 2012-09-25T10:35:48.993 に答える
1

コメントに基づいて、次のように DateTime を解析する必要があります。

DateTime date = DateTime.ParseExact(dt.Rows[i]["messagePostedDate"].ToString(),
                         "yyyy-MM-dd HH:mm:ss.fff",
                         CultureInfo.InvariantCulture);

cmd.Parameters.Add("@Posted_date", SqlDbType.DateTime).Value = date;

文字列には DateTime Format が含まれているため、日付形式でDateTime.ParseExactyyyy-MM-dd HH:mm:ss.fffを使用できます。

于 2012-09-25T10:42:22.623 に答える
-1

(convert(varchar,messagePostedDate,101)) as messagePostedDate選択クエリでこれを使用します。ここに参照用のリンクがあります。T-SQL http://msdn.microsoft.com/en-us/library/ms187928.aspxのすべてのキャストと変換があります。

于 2012-09-25T10:43:53.977 に答える