2005.03.29

テーブル設計(1)-日付項目のデータ型について

テーブル設計をする上で日付項目のデータ型は、何にしますか?
登録日時や更新日時のようにタイムスタンプとして
時分秒ミリ秒まで格納しなければいけない場合は、
皆さんもDATE型にすると思います。
単に年月日だけを格納する場合の日付項目のデータ型が、
システムによりマチマチに感じます。
数値型は論外として、DATE型と文字型のメリットを上げますと

DATE型
 日付として正しくない値は格納できない。
 日付の演算(1月後など)や算出(月末日を求めるなど)が容易。

文字型
 日付の年、月、日の取得が容易。

どちらも関数を1つ入れればいい話で、プログラマ的にはどちらでも
同じだと思います。

しかし、日付の範囲指定など

where DATE_COL between to_date('2005/01/01', 'YYYY/MM/DD')
and to_date('2005/05/31', 'YYYY/MM/DD') ;
とするのと、
where CHAR_COL between '20050101' and '20050531' ;
とするので、どちらが楽なのかなぁ?と考えてしまいます。

皆さんはどう思われますか?

コメント (2)

日付であればDATE型
年月、や日だけなどであれば
CHARであるべきでしょう。 プログラム開発の
難易度もさることながら、RDBとしての資産価値を
お客様のために考えましょう。

日付であればDATE型
年月、や日だけなどであれば
CHARであるべきでしょう。 プログラム開発の
難易度もさることながら、お客様のためにRDBとしての資産価値を考えましょう。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin