• ベストアンサー

日付・・・insertとselect

初投稿です。うまく伝えれるかわかりませんがみなさんきいてください WEBページから入力した日付をMySQLに登録するときはchar型で登録してもいいんでしょうか? 登録の感じは20080910(2008年9月10日)で8桁で登録しています。(insert) 次に日付の開始日~終了日を入力して開始日から終了日に当てはまるデータを取り出すといったことをします。 ↑で登録した日付を取り出したいのです。 しかしselect文で日付検索をする場合は2008-01-01と間にハイフンが入っていることに気づきました。 と言う事は登録のときに2008-09-10といった感じでchar型の10桁指定で登録したほうがいいんでしょうか? 説明不足かもしれませんが皆さん協力お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

せっかく、RDBMSを使うのでしたら、日付や時刻は文字列型で持つのは止めた方がいいでしょう。DATE型で持つべきでしょう。 プログラムから発行するSQL文では、文字列として渡すことになります。そのときの書式は'2008-09-10'といった形ですが、テーブル上では文字列として持つわけじゃないです。 DATE型またはDATETIME型で持つ利点は ・現在時刻の取り扱いが容易 ・限定されてはいるが、演算も可能 ・誤った日付2008-13-41などは入らない etc

bankensan
質問者

お礼

回答ありがとうございます。 日付はDATE型で登録してみます。利点も多いようですし。 詳しい回答ありがとうございました。

その他の回答 (1)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

ANo.1のご回答にあるようにデータベースでは日付型を使った方がよさそうです。 もし、今のまま文字型を使われるのでしたら、データ側でハイフンを入れるよりも、select文のwhere句の条件側を"2008-01-01"とならないようにし"20080101"と編集した方がいいのかなあと思います。

bankensan
質問者

お礼

回答ありがとうございます。 文字型のままだと"20080101"でいいんですね。勉強になります。 教えてgoo初投稿でしたが便利なサイトですねw 協力ありがとうございました。

関連するQ&A