コンテンツへスキップ

Entityのフィールドで、NULL許容しないDatetime型の既定値に注意

2009年8月20日

前回まで原因を追及してきたが、結局は表題の原因ということで落ち着いた。

NULL許容しないDatetime型の既定値をデフォルトの空白にしておくと、Date.MinValueになるっぽい。

これが、SQL Server のdatetime型との日付範囲の相違となり、予期せぬエラーとなっていたということ。

既定値をSQL Server のdatetime型の範囲内で設定することによりとりあえずエラー回避したが、ストアドに渡ってくる主キー以外のパラメーターの値は実データと異なるものになるってことね。

てか、既定値の日付の書式を “yyyy-MM-dd HH:mm:ss.fffZ”で入れてくれっていうんだが、Zがなんのことやらわからなくて難儀した。9999-12-31 23:59:59.000Z こんなんでいいみたい。

それと、同時実行モードをFixedにすれば、ページ上の値をパラメーターにセットしてくれそうな気もするなぁと思った(じゃないと同時実行のチェックができないもんねぇ)のでやってみたら、案の定だった。こっちで対応するって手もあるな。

image

09/9/1追記 SQL Server 2008ならdatetime2やdatetimeoffsetを使えばいいんだな。datetimeはSQL標準に準拠していないと自分でも言ってるし。

From → .NET

2件のコメント
  1. 野良 permalink

    Z・・・・・・International対応のものだと思います。http://msdn.microsoft.com/ja-jp/library/ms180878.aspx#ISO8601Formatによると協定世界時を表すみたいですです。//timeoffsetでみたことがありました^^

  2. 松太郎 permalink

    コメントありがとうございます。書式指定文字列のページに大文字のZが載っていなくて戸惑いました。この"Z"は書式を示すものではなく、リテラルそのもので標準時をあらわしてるってことか。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。