• ベストアンサー

MySQL「 INT」「 DATETIME」違い

MySQLの「 INT」型と「 DATETIME」型の違いを教えてください。 ・「 DATETIME」型とは、単に日付形式を担保してくれる型に過ぎないのでしょうか? ・日付形式(フォーマット)以外を挿入すると、「0000」になってしまうということでしょうか? ■「 DATETIME」メリット ・データ内容が見た目で分かる以外、何があるのでしょうか? ■「 INT」メリット ・早い?

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

  • ベストアンサー
回答No.1

月の末日やうるう年の処理を行ってくれるのは十分なメリットかとおもいます。 SELECT '2013-06-30' + INTERVAL 1 DAY; 結果は「 2013-07-01 」 SELECT 20130630 + 1; 結果は「 20130631 」 なお1番目が上手く表示されないときはCAST関数でDATE型に変換してみてください SELECT CAST( '2013-06-30' + INTERVAL 1 DAY AS DATE );

re97
質問者

お礼

回答ありがとうございました。 >月の末日やうるう年の処理を行ってくれる ・初めて知りました ・SQLで操作できるんですね ・勉強になりましたー

その他の回答 (2)

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.3

 DATETIMEに日付以外の物を入れるとエラーになります。  でも、これを担保してくれるだけの型でもないですよ。  少なくとも、私は、2001年12月5日-2001年10月7日は、何日間ですか?なんて計算の為のアルゴリズムをいちいち作りたくはありませんから。  これだけでも、汎用性のあるちゃんとしたルーチン作るの大変なんですよ。  ましてや、ある基準日から、200日後この日付は何日ですか?とか、1999年5月7日10:50の5000分後はいつですか?なんて質問に答えるルーチンを作るのも嫌ですし、2010年6月10日は何曜日ですか?というのはもっと嫌ですね。  日付型をちゃんと使えば、ほとんど何も考えずに、上記の質問の全てに答えられます。  この日付・時刻というやからは、おそらく、あらゆる単位系の中で、一番嫌らしい・ややこしい単位系じゃないかしら。考えてみれば、アナログ時計を読むのも結構難しいことやってますものね。まぁ、もう慣れてるから本能で出来ますけど・・・・(今、小さな娘に時計の読み方を教えるのに四苦八苦しているもので(笑))

re97
質問者

お礼

回答ありがとうございました。 >日付・時刻というやからは、おそらく、あらゆる単位系の中で、一番嫌らしい・ややこしい単位系じゃないかしら ・確かにそうですね ・改めて考えてみると、全くその通りだと思います ・参考になりましたー

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

DATETIME型は8バイト20桁のyyyymmddhrmnsc000000という値が入っています。 もちろん出し入れする際に変換されていますので、内部では2進数で存在します。 日付形式以外を入れると異常終了します。 INTに文字を入れた時のようになります。

re97
質問者

お礼

回答ありがとうございました。 >出し入れする際に変換されていますので、内部では2進数で存在します。 >日付形式以外を入れると異常終了します ・参考になりましたー