MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでTIME・DATETIMEの値を数値形式に変換する方法をわかりやすく解説

MySQLでは、TIME(N)DATETIME(N)の値を数値形式に変換したい場合、その値に+0(ゼロを足す)だけで実現できます。非常にシンプルなテクニックですが、覚えておくと便利です。

変換結果は、小数点以下の桁数Nの値によって異なり、以下のようなルールで決まります。

Nが0の場合:整数(INTEGER)に変換される

TIME(N)およびDATETIME(N)のNが0の場合、これらの値は整数型として変換されます。

例えば、現在時刻を返すCURTIME()や、現在の日時を返すNOW()の値は、次のように+0することで整数値へと変換できます。

mysql> SELECT CURTIME(), CURTIME()+0;
+-----------+-------------------+
| CURTIME() | CURTIME()+0       |
+-----------+-------------------+
| 19:42:54  | 194254            |
+-----------+-------------------+
1 row in set (0.04 sec)

mysql> SELECT NOW(), NOW()+0;
+-------------------------+----------------------------------+
| NOW()                   | NOW()+0                          |
+-------------------------+----------------------------------+
| 2017-10-27 19:43:43     | 20171027194343                   |
+-------------------------+----------------------------------+
1 row in set (0.00 sec)

このように、「19:42:54」は「194254」、「2017-10-27 19:43:43」は「20171027194343」という形式の整数になります。コロンやハイフンなどの区切り文字が取り除かれ、数値として連結されるのがポイントです。

Nが0より大きい場合:小数(DECIMAL)に変換される

一方、Nが0より大きい場合、つまりマイクロ秒などの小数部分を持つ値に対しては、DECIMAL(小数)形式で変換されます。

同様に、CURTIME(3)NOW(3)を使った例を見てみましょう。

mysql> SELECT CURTIME(), CURTIME(3)+0;
+-----------+-------------------+
| CURTIME() | CURTIME()+0       |
+-----------+-------------------+
| 19:47:40  | 194740.575        |
+-----------+-------------------+
1 row in set (0.04 sec)

mysql> SELECT NOW(), NOW(3)+0;
+-------------------------+----------------------------------+
| NOW()                   | NOW()+0                          |
+-------------------------+----------------------------------+
| 2017-10-27 19:48:45     | 20171027194845.589               |
+-------------------------+----------------------------------+
1 row in set (0.00 sec)

この例では、時刻「19:47:40」が「194740.575」、日時「2017-10-27 19:48:45」が「20171027194845.589」という小数値に変換されています。小数点以下の数値はミリ秒(3桁指定の場合)を表しています。

まとめ

  • N=0の場合 → 整数(INTEGER)形式に変換される
  • N>0の場合 → 小数(DECIMAL)形式に変換される

この変換テクニックは、日時データをソートキーや計算処理に使いたい場合などに役立ちます。ぜひ活用してみてください。

  1. MySQLでchar型カラムをdatetime型に変換する方法をわかりやすく解説

    MySQLでは、char型として保存された日付文字列をdatetime形式に変換したいケースがあります。本記事では、REPLACE関数とSTR_TO_DATE関数を組み合わせて、「12/31/2017 10:50」のような米国式の日付文字列を「2017-12-31 10:50:00」というdatetime形式へ変換する手順を、実際のSQLと実行結果付きで解説します。サンプルテーブルの作成まず、テーブルを作成します。ここでは配送日(ShippingDate)をあえてchar型として宣言しています。mysql> create table DemoTable1472  &n

  2. MySQLでvarchar型の時刻データを正しい時間形式に変換する方法

    varchar型として保存された「1620」や「2345」のような時刻データを、実際の時間形式(例:04:20)に変換したい場合、MySQLのTIME_FORMAT()関数を使用することで実現できます。この記事では、SUBSTRING()とCONCAT()を組み合わせて、4桁の文字列を「時:分」の形式に整形する手順を解説します。1. サンプルテーブルの作成まず、到着時刻をvarchar型で格納するテーブルを作成します。mysql> create table DemoTable1591 -> ( -> ArrivalTime varchar(20) -&