MySQL整数/日付/時間タイプの説明


一、mysql整数タイプ:
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT.8,16,24,32,64ビットのストレージスペースをそれぞれ使用します.
MySQL整数タイプ:格納領域、整数範囲の比較.
                                                          
------------  ---------   ------------------------  -----------------------------------------
 tinyint        8  bits   0 ~ 255                   -128 ~ 127
 smallint       16 bits   0 ~ 65535                 -32768  ~ 32767
 mediumint      24 bits   0 ~ 16777216              -8388608 ~ 8388607
 int            32 bits   0 ~ 4294967295            -2147483648 ~ 2147483647
 bigint         64 bits   0 ~ 18446744073709551615  -9223372036854775808 ~ 9223372036854775807

記憶される値の範囲は−2(N−1)〜2(N−1)−1であり、符号なし記憶範囲は0〜2 N−1である.
mysqlは整数タイプの幅を指定することができます.例えばint(11)は、ほとんどのアプリケーションでは意味がありません.値の正当な範囲を制限することはありません.mysqlを規定するいくつかのインタラクティブツール(例えばmysqlコマンドラインクライアント)が文字の個数を表示するために使用することを規定します.保存と計算ではint(1)とint(20)は同じです.
二、mysql日付タイプ:
MySQL日付タイプ:日付フォーマット、占有ストレージスペース、日付範囲比較.
                                                
------------  ---------   --------------------- -----------------------------------------
 datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
 timestamp      4 bytes   YYYY-MM-DD HH:MM:SS   1970-01-01 00:00:01 ~ 2038
 date           3 bytes   YYYY-MM-DD            1000-01-01          ~ 9999-12-31
 year           1 bytes   YYYY                  1901                ~ 2155

timestampタイプのカラムには、デフォルトではinsert、updateデータの場合、timestampカラムは自動的に現在時刻(CURRENT_TIMESTAMP)で充填/更新されます.自動とは、それを管理せずにMySQLが処理することを意味します.
timestampに表示される値は、タイムゾーン、mysqlサーバ、オペレーティングシステム、およびクライアント接続に依存します.datetimeが表示する値はタイムゾーンとは関係なく、テキストが表す日付と時間を保持します.
三、mysql時間タイプ:
MySQL時間タイプ:時間フォーマット、占有ストレージスペース、時間範囲.
                                               
------------  ---------   --------------------- -----------------------------------------
 time           3 bytes   HH:MM:SS              -838:59:59    ~    838:59:59

time時間範囲がこんなに広い範囲なのに、特にtimeが負の値を取ることができるのはおかしい.その後、MySQLのマニュアルを見て、2つの日付の時間を満たすためにこのように設計されたことを知りました.
select timediff('2000:01:31 23:59:59', '2000:01:01 00:00:00');  --  743:59:59
select timediff('2000:01:01 00:00:00', '2000:01:31 23:59:59');  -- -743:59:59
select timediff('23:59:59', '12:00:00');                        --  11:59:59

なお、timediffの2つのパラメータはdatetime/timestamp、timeタイプのみであり、この2つのパラメータタイプは同じである.すなわち、datetime/timestampとdatetime/timestampを比較する.timeとtimeを比較します.
MySQLの日付タイプは豊富ですが、残念ながら、現在(2008-08-08)の日付タイプは秒レベルまでしかサポートされておらず、ミリ秒、マイクロ秒はサポートされていません.ミリ秒の関数も生成されていません.