ホームページ >データベース >mysql チュートリアル >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() 関数を使用する場合は、次の点に注意する必要があります。
フォーマット文字列では、識別子 (Y、m など) 、 d、 H 、 i、 s など)の場合は異なります。大文字は厳密な一致を意味し、小文字は緩やかな一致を意味します。たとえば、%m は 01 や 1 などの形式を受け入れることができる数値の月を表し、%M は完全に一致する必要がある英語の月を表します。
フォーマット文字列で使用される区切り文字は、実際の文字列で使用される区切り文字と同じである必要があります。実際の文字列で日付区切り文字として「-」が使用されている場合、書式設定文字列でも区切り文字として「-」を使用する必要があります。
厳密モード: フォーマット文字列が実際の文字列と一致しない場合、厳密モードが使用されている場合 (MySQL 設定ファイルで sql_mode を STRICT_ALL_TABLES に設定するなど)、エラーが返されます。厳密モードが使用されていない場合は、NULL が返されます。
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 で時刻変換を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。