2011-08-07 10 views

答えて

3

INTの後の数字は、列を選択するときの列の幅を示します。 このフィールドに格納されている値の範囲は、に制限されません。 INTは、後に置く数にかかわらずINTです。

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

数値型が

属性のMySQLは、任意のタイプのベースキーワード以下の括弧内整数データ型の表示幅を指定するための拡張機能をサポートします。たとえば、INT(4)は4桁の表示幅のINTを指定します。このオプションの表示幅は、列に指定された幅よりも小さい幅を持つ整数値をスペースで左に埋めて表示するためにアプリケーションで使用されます。 (つまり、この幅は結果セットで返されるメタデータにあり、使用されるかどうかはアプリケーションによって決まります)

表示幅は列に格納できる値の範囲を制限しません。また、列の表示幅よりも広い値が正しく表示されないこともありません。たとえば、SMALLINT(3)として指定された列は、通常のSMALLINTの範囲が-32768〜32767であり、3桁で許可された範囲外の値は3桁を超えて完全に表示されます。

+0

@ChrisAaker ...なぜですか? :( –

+0

@pstオフセットを分単位で保存すると仮定すると、-720 - 780 – nickf

+0

@nickfの範囲が必要です。SQL ServerのDATETIMEOFFSETについて考えていたのですが、MySQLは別のフィールドやカスタムアプローチに依存しています。 :) –

1

トリック質問!

TIMESTAMP for UNIX timestampsを使用し、TIMESTAMPの範囲外の日付の場合はDATETIMEを使用してください。

ハッピーコーディング。

+0

haha​​ nice one。 +1 – nickf

+0

@Chris Aaker UNIXのタイムスタンプは、現時点での実用的な予定の日付を常に参照してきました(タイムゾーンのような人間の構造に対して非常に精度や注意を払うことなく;-) - 私は、2038年がMySQL TIMESTAMPの範囲にかなり近いと確信しています64ビット以上に拡張できます。 「通常の」UNIXタイムスタンプの論理的拡張機能と同じです。 COBOLについてはまだまだですが、2038年の「現在の」システムが現在のリレーショナルシステムをはるかに超えていることを願っています。 –

関連する問題