TIMESTAMPタイプとYEARタイプ
MySQLでの日付と時刻の操作に関するこのシリーズにようこそ。最初の2回の記事では、MySQLの時間データタイプについて説明します。パート1では、DATE、TIME、およびDATETIMEデータタイプについて説明しましたが、この記事では、残りのTIMESTAMPおよびYEARタイプについて説明します。
TIMESTAMPタイプ
TIMESTAMPタイプは、両方とも日付と時刻の組み合わせを保持する時間データタイプであるという点で、MySQLのDATETIMEと似ています。これは、なぜ同じ情報に対して2つのタイプがあるのかという疑問を投げかけます。手始めに、MySQLのTIMESTAMPは通常、レコードへの変更を追跡するために使用され、レコードが変更される度に更新されることがよくありますが、DATETIMEは特定の時間値を格納するために使用されます。別の考え方として、DATETIMEは日付(カレンダーに表示されるような)と時刻(壁掛け時計に表示されるような)を表し、TIMESTAMPは明確に定義された時点を表します。'2009-11-01 14:35:00'はどのくらい前かは現在のタイムゾーンによって異なるので、アプリケーションがタイムゾーンを処理する場合、この区別は非常に重要になる可能性があります。一方、'1970-01-01 00:00:00 UTC'から1248761460秒は常に同じ時点を指します。
ストレージに関しては、TIMESTAMPには4バイトが必要ですが、DATETIMEには5バイトが必要です。TIMESTAMP列には14文字が格納されますが、あなたがそれをどのように定義するかに応じて、様々な方法で表示できます。例えば、列をTIMESTAMP(2)として定義すると、2桁の年のみが表示されます(完全な値が保管されている場合でも)。このアプローチの利点は、後で完全な値を表示することに決めた場合に、テーブル定義を変更でき、完全な値が表示されることです。
以下は、TIMESTAMPを定義する様々な方法と、結果の表示形式のリストです。
- TIMESTAMP(14): YYYY-MM-DD HH:MM:SS
- TIMESTAMP(12): YY-MM-DD HH:MM:SS
- TIMESTAMP(10): YY-MM-DD HH:MM
- TIMESTAMP(8): YYYY-MM-DD
- TIMESTAMP(6): YY-MM-DD
- TIMESTAMP(4): YY-MM
- TIMESTAMP(2): YY
Navicat 16 テーブルデザイナーでは、タイムスタンプの精度を[Length]列で定義できます。
上記の例のようにLengthが指定されていない場合、Navicatは、TIMESTAMP(14)として宣言されているものとして、フィールド全体を表示します。
YEARタイプ
多くのDBAは、年を整数として格納することを選択します。それは確かに機能しますが、YEARタイプはわずか1バイトしか使用しないので、その目的のためにはMySQLの専用YEARタイプを使用する方が効率的です。YEAR(2)またはYEAR(4)として宣言して、2文字または4文字の表示幅を指定できます。幅が指定されていない場合、デフォルトは4文字です。YEAR(4)とYEAR(2)の表示形式は異なりますが、値の範囲は同じです。:
- 4桁の形式の場合、MySQLはYEAR値を1901〜2155の範囲でYYYY形式で表示するか、0000を表示します。
- 2桁の形式の場合、MySQLは最後の2桁(最下位)のみを表示します。例えば、70(1970または2070)、69(2069)。
Navicatテーブルデザイナーの4桁形式の年列の例を次に示します。
結果として、テーブルには完全な年が表示されます。
結論
これで、5つのMySQLの時間データタイプの調査は終わりです。次回の記事では、いくつかの便利な日付と時刻の関数について説明します。