-
23-09-2019 - |
質問
私はMS SQL 2000、VS2008、MVCおよびC#を使用しています。
私は、ストアドプロシージャを使用して、いくつかのデータを挿入して更新しようとしています。 一部の列は、DateTime型です。 サーバーとクライアントの両方で地域の設定は、オランダ語(ベルギー)に設定されています この手段デフォルトの日付形式DD / MM / YYYYです。
私は例えばの日付で挿入または更新してみてください。 28/03/2009、私は次のエラーを取得します:
インサート: 変換エラーデータ型はnvarcharに日時
アップデート: datetimeデータ型にcharデータ型の変換は、範囲外のdatetime値
が得られました 私は2009年1月3日のような日にしようとすると、は、私はエラーを取得していないが、日付が米国の日付形式である2009年3月1日、として保存されます。 これは、地域設定で問題が発生する典型的な動作です。しかし、両方のは、オランダ語(ベルギー)に設定されています。
なぜそれが
?米国の形式で日付を保存しません
私はここで何をしないのですか?
ありがとう!
Stijn
解決
あなたはDateTimeオブジェクトではなく、文字列を使用してデータベースにデータを挿入する必要があります。あなたのクライアント側のコードは、その後のDateTime構造体は、最終的にデータベースに送信されたパラメータに追加する必要があり、クライアントの地域設定を使用してDateTimeオブジェクトに対するクライアントの日付エントリを変換する必要があります。
他のヒント
SQLのインスタンスは、それが自分のロケール設定のしている、デフォルトでは「us_englishの」
あなたが店のデータ値にvarchar型ではなく、ネイティブの日時を使用してプッシュする場合は、さて、これは通常起こります。あなたのコード/テーブルがdatetime型のカラムを使用し、日時などのパラメータを定義するなら、あなたはエラーを取得することはできません。
私は、あまりにもあなたのSQLサーバーの日付形式で行うには、その何かを、この問題を抱えていた、
iは、日付列がそう
のように挿入されるようにフォーマットすることによってそれを解決DateTime.Now.ToString("MM/dd/yyyy HH:mm")
タグに役立ちます希望
上記のすべての提案は正しいですが、あなたが最も安全な方法は、フォーマット「YYYY-MM-DD」内にある文字列/ varchar型として日時を追加している場合、私は見つける
だから、たとえばます。
Update MyTable
Set MyDate = '2010-03-01'