-1

dd / mm / yyyyの形式の日付を挿入する必要がありますが、残念ながら、現時点では、SQLが埋め込み挿入から次のエラーをスローしています。

varcharデータ型を日時データ型に変換すると、値が範囲外になりました。ステートメントは終了されました。

これは、データベースが間違った日付形式を探しているためだと思います。データベースでdd/mm/yyyyを検索する方法の解決策を誰かに教えてもらえますか。同時に何千もの挿入が行われるため、コード内のすべての日付を変換することは避けたいと思います。ありがとう

4

3 に答える 3

4

dd / mm/yyyy形式の日付を挿入する必要があります

特定の形式については考えないでください。日付と時刻には本質的に形式がありません。データベースフィールドが日付/時刻関連のタイプであることを確認してから、DateTimeまたはDateTimeOffset値を指定するパラメータ化されたSQLを使用します。そうすれば、コードは文字列をまったく処理しません

エラーがからの変換について話しているという事実はvarchar、データを文字列として提供していることを示しています。あなたはそれをするべきではありません。入力形式がテキストの場合でも、DateTimeOffsetできるだけ早く自然なデータ型(たとえば)に変換する必要があります。これにより、コードベース全体でデータを操作しやすくなります。

于 2012-05-23T13:00:57.617 に答える
1

convertを使用して、スタイルとして103を指定できます。

convert(datetime, YourColumn, 103)

または、日付形式を設定できます。

set dateformat dmy
于 2012-05-23T12:59:47.447 に答える
1

日付リテラルは、常に安全で、明確で、言語に依存しない形式である必要があります。したがって、埋め込みSQLは次のようになります。

INSERT dbo.table(column) VALUES('YYYYMMDD');

を使用して、C#でこの方法で文字列を簡単にフォーマットできますToString()

ただし、さらに良いことに、パラメーター化されたステートメントを使用し、適切な日時パラメーターを渡し、文字列のフォーマットについてはまったく気にしないでください。

于 2012-05-23T13:02:29.590 に答える