INT型カラムに格納されたUNIXタイムスタンプをMySQLのTIMESTAMPとして取得するには?
テーブルのINT型カラムに整数値として保存されているタイムスタンプを、MySQLのTIMESTAMP形式として取得したい場合は、FROM_UNIXTIME() 関数を使用します。この関数は、UNIXエポック(1970年1月1日 00:00:00 UTC)からの経過秒数を、人間が読める日時形式に変換してくれます。
サンプルデータの確認
ここでは、「test123」というテーブルに「val1」というINT型カラムがあり、以下のように整数値が保存されているとします。
mysql> Select * from test123; +------------+ | val1 | +------------+ | 150862 | | 1508622563 | | 622556879 | | 2147483647 | +------------+ 4 rows in set (0.00 sec)
FROM_UNIXTIME()関数でTIMESTAMP形式に変換する
FROM_UNIXTIME()関数を使えば、これらの整数値をMySQLのTIMESTAMPデータとして簡単に取得できます。
mysql> Select FROM_UNIXTIME(Val1) from test123; +---------------------+ | FROM_UNIXTIME(Val1) | +---------------------+ | 1970-01-02 23:24:22 | | 2017-10-22 03:19:23 | | 1989-09-23 17:57:59 | | 2038-01-19 08:44:07 | +---------------------+ 4 rows in set (0.00 sec)
補足:2038年問題に注意
上記の例で「2147483647」が「2038-01-19 08:44:07」に変換されている点に注目してください。これは32ビット符号付き整数で表現できる最大値であり、いわゆる2038年問題の上限に相当します。INT型でタイムスタンプを扱う場合、2038年1月19日以降の日時は正しく表現できないため、将来を見据える場合はBIGINT型の使用やDATETIME型への移行も検討するとよいでしょう。
-
MySQLのSMALLINTに相当するJavaの型は?short型との対応関係を解説
MySQLのSMALLINTに相当するJavaのデータ型は、short型です。Javaのshort型は2バイト(16ビット)の符号付き整数で、-32768から32767までの範囲の値を扱うことができます。MySQLのSMALLINTも同様に2バイトで、同じ範囲の値を格納可能です。MySQLのSMALLINTとJavaのshort型の比較項目MySQL(SMALLINT)Java(short)サイズ2バイト(16ビット)2バイト(16ビット)値の範囲-32768 ~ 32767-32768 ~ 32767備考UNSIGNEDを指定すると0 ~ 65535になる符号付きのみなお、MySQLでUNS
-
MySQLで列の最大値を取得する方法をわかりやすく解説
MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(