8

テーブル「composers」VALUES(名前VARCHAR(30)、誕生年(4)、死亡年(4)、都市VARCHAR(30)、国VARCHAR(30))を作成しました。次に、i INSERT INTO composers VALUES ('BACH Johann Sebastian',1685,1750,'Eisenach','Germany');. 2 つのエラーを返します。年は 1901 年から 2155 年の間ではありません。

これらの列の実際の年を取得できるように、このデフォルトを変更する方法はありますか? ウェブ上で何かを見つけることができないようです。

これらの列に INTEGER(4) を使用することにしましたが、可能であれば YEAR(4) を使用したいと考えています。

4

4 に答える 4

8

docsでこのタイプが機能する唯一の方法であることは明らかです。

このYEAR(4)型は 1 バイトのみを使用し、範囲は 256 年に制限されています。ユース ケースが別の 256 年空間に完全に収まる場合、確かにそれらを一定量保存し、書き込み前と読み取り後に自分自身を調整することができます (たとえば、-300)。

または、full の代わりにSMALLINTorを使用して 2 バイトを使用します。'YEAR(4)' が使用する 1 バイトではありませんが、UNSIGNED SMALLINTINTINT

于 2012-11-16T06:35:10.270 に答える
1

データ型はそのYEAR範囲のみをサポートします。他の値を使用する場合は、標準を使用してINTください。

この型を使用する唯一の利点YEARは、2 桁の年から 4 桁の年号への半自動変換です。

于 2012-11-16T06:33:06.100 に答える
0

整数を使用して年を数値として格納するか (既に行ったこと)、または PostgreSQL などのより賢明なデータベースに切り替えることができます。これは、何百万年も前または未来の日付を格納することに問題はありません。

于 2012-11-16T06:34:46.173 に答える
0

この場合、Int を使用する必要があると思います。この http://kimbriggs.com/computers/computer-notes/mysql-notes/mysql-data-types-50.fileによると

年型の範囲は 1900 ~ 2155 で、変更できません :)

于 2012-11-16T06:39:23.203 に答える