[前][次][番号順一覧][スレッド一覧]

mysql:8704

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Thu, 05 Feb 2004 11:54:33 +0900
Subject: [mysql 08704] Re: 日付のデータタイプについて

 こんにちは。

きたぢま <kitajima@xxxxxxxxxx>さんの
<20040205104216.D826.KITAJIMA@xxxxxxxxxx>
"[mysql 08703] Re: 日付のデータタイプについて"


> 日時の目的と用途によって変わると思いますが、僕の感想としては
> DATETIME型で定義しておくと日付け関数の恩恵(結構な数用意されている)にあず
> かりやすいという点がメリットでしょうか。
> 
> 例:DAYOFWEEK(date)   ・・・・dateの曜日を返します。(1=日曜日...)
> 
> また、YYYY/DD/MM書式をTIME値(INT)に変換するのも自分でやると面倒ですが、
> これもSQLの関数に任せることもできます。
> つまり、PHPで計算処理するよりもっと簡単になる…。
> 任せれるものは任せる。これがバグを減らす鉄則です。(自論!?)

 この点はきたじまさんご指摘の通りと考えます。日付や時刻を扱う型が存在す
るのですから、シンプルにそれを使えば良いと考えます。数値型や文字列型で日
付や時刻を扱うのは、その場ではよさげに見えても実はトラブルの元ですね。


> ただ、新旧比較・ソートだけならINTでも十分でしょう。

 UNIXTIME=標準Cライブラリのtime_t型で良いでしょうか?time_t型がどの様
な実体を持つかは実装依存ですが、現在の実装は符号付き32bit整数が主流でし
ょう。この事から2038年問題が発生しますし、最近ではその前駆的な障害が発生
しています。

    スラッシュドットの記事、「2038年問題、早くも顕在化」
    http://slashdot.jp/article.pl?sid=04/02/03/031211


 という事で、INT型フィールドにtime_t型の値をぶち込むのは、あまり宜しく
ない実装と言えるでしょう。またTIMESTAMP型も、単純に考えれば危険性を孕ん
でいる可能性があると言えます。この点に関し、MySQL ABはどの様な見解を示し
ているのでしょうか?



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



[前][次][番号順一覧][スレッド一覧]

      8702 2004-02-05 01:14 [Masaki Nohtomi <narf] 日付のデータタイプについて              
      8703 2004-02-05 10:50 ┗[きたぢま <kitajima@x]                                       
->    8704 2004-02-05 11:54  ┗[ML account <ml@xxxxx]                                     
      8707 2004-02-05 14:27   ┗[Masaki Nohtomi <narf]