MySQL では、時刻は文字列の形式でテーブルに保存されることがよくありますが、これは時間の計算や比較には不便です。したがって、関連する操作を容易にするために、文字列型 time を time 型に変換する必要があります。この記事では、MySQL で時間を変換する方法を紹介します。
MySQL では、時刻は DATETIME、TIMESTAMP、DATE、TIME およびその他の型で表すことができます。これらの型が MySQL に保存される時間は UTC 時間です。
文字列型を時刻型に変換するには、MySQL が提供する STR_TO_DATE() 関数を使用できます。この関数の構文は次のとおりです。
STR_TO_DATE(str, format)
このうち、str は変換対象の文字列を表し、format は文字列内の日付と時刻の形式を表します。例:
SELECT STR_TO_DATE('2019-08-14 21:12:23', '%Y-%m-%d %H:%i:%s');
この SQL ステートメントは、2019 年 8 月 14 日の 21:12:23 を示す DATETIME 型の時刻を返します。
STR_TO_DATE() 関数を使用する場合は、次の点に注意する必要があります。
STR_TO_DATE() 関数に加えて、UNIX_TIMESTAMP() 関数を使用して文字列型の時刻を UNIX タイムスタンプに変換することもできます。 UNIX タイムスタンプは、1970 年 1 月 1 日の 00:00:00 から現在時刻までの秒数を表す整数です。例:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23');
この SQL ステートメントは、2019 年 8 月 14 日の 21:12:23 の UNIX タイムスタンプを表す整数を返します。
UNIX タイムスタンプと MySQL の時間タイプは両方とも UTC 時間であるため、直接比較および計算できます。たとえば、UNIX_TIMESTAMP() を使用して時刻タイプを UNIX タイムスタンプに変換し、それらを減算して 2 つの時刻間の時差を取得できます。例:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23') - UNIX_TIMESTAMP('2019-08-14 21:12:21');
この SQL ステートメントは、2019 年 8 月 14 日の 21:12:23 と 2019 年 8 月 14 日の 21:12:21 の間の時間差を表す整数を返します。つまり 2 秒です。
文字列型の時刻を時刻型に変換するだけでなく、DATE_FORMAT() 関数を使用して時刻型を文字列型に変換することもできます。この関数の構文は次のとおりです。
DATE_FORMAT(date, format)
このうち、date は変換する時刻、format は返される文字列の形式です。例:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
この SQL ステートメントは、現在時刻の文字列表現を「YYYY-MM-DD HH:MI:SS」の形式で返します。
概要:
MySQL では、時刻は文字列の形式でテーブルに格納されることがよくあります。時間の計算と比較を容易にするために、文字列型の時間を直接計算および比較できる時間型に変換する必要があります。 MySQL が提供する STR_TO_DATE() 関数と UNIX_TIMESTAMP() 関数を使用して、文字列型の時刻を時刻型または UNIX タイムスタンプに変換するか、DATE_FORMAT() 関数を使用して時刻型を文字列型に変換できます。変換関数を使用する場合は、書式文字列の記述仕様と厳密モードの使用に注意する必要があります。
以上がMySQL で時間を変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。