次のように日付をストアド プロシージャに渡そうとしています。
@dateRegistered = '28/04/2012'
しかし、それは私に言い続けます:
データ型 varchar を日付に変換中にエラーが発生しました。
次のようにすると機能します。
@dateRegistered = '04/28/2012'
しかし、これは私が使いたい形式ではありません。
次のクエリを実行して、形式を設定しました。
SET DATEFORMAT dmy
なぜ機能しないのですか?
編集:これが私がやった方法です:
私のストアド プロシージャでは、次のように記述します。
SET DATEFORMAT dmy
次に、コードから、次のように渡します。
myCommand.Parameters.Add("@dateRegistered", SqlDbType.Date);
myCommand.Parameters["@dateRegistered"].Value = DateTime.Now.ToString("dd/mm/yyyy");
コンピューター (またはサーバー) の日付形式が異なる場合でも、常に dmy が使用されるように、文字列として渡しました。
編集 編集:
私はそれをdatetime.nowとして渡しました。送信するとデフォルトの形式に変換され、読み取るとコンピューターの形式に変換されるようです。これがどのように正確に起こるかはわかりませんが、うまく機能しているようです。