ホームページ  >  記事  >  データベース  >  MySQL で時間を変換する方法

MySQL で時間を変換する方法

PHPz
PHPzオリジナル
2023-04-20 10:10:074264ブラウズ

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() 関数を使用する場合は、次の点に注意する必要があります。

  1. 識別子のケース: フォーマット文字列内の識別子 (Y、m、d、など) H 、 i 、 s など) の場合は異なります。大文字は厳密な一致を意味し、小文字は緩やかな一致を意味します。たとえば、%m は 01 や 1 などの形式を受け入れることができる数値の月を表し、%M は完全に一致する必要がある英語の月を表します。
  2. 区切り文字: フォーマット文字列で使用される区切り文字は、実際の文字列で使用される区切り文字と一致している必要があります。たとえば、実際の文字列で日付区切り文字として「-」が使用されている場合、書式文字列でも区切り文字として「-」を使用する必要があります。
  3. Strict モード: フォーマット文字列が実際の文字列と一致しない場合、Strict モードが使用されている場合 (MySQL 設定ファイルで sql_mode を STRICT_ALL_TABLES に設定している場合など)、エラーが返されます; strict モードが使用されていない場合は、エラーが返されます。 , 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 では、時刻は文字列の形式でテーブルに格納されることがよくあります。時間の計算と比較を容易にするために、文字列型の時間を直接計算および比較できる時間型に変換する必要があります。 MySQL が提供する STR_TO_DATE() 関数と UNIX_TIMESTAMP() 関数を使用して、文字列型の時刻を時刻型または UNIX タイムスタンプに変換するか、DATE_FORMAT() 関数を使用して時刻型を文字列型に変換できます。変換関数を使用する場合は、書式文字列の記述仕様と厳密モードの使用に注意する必要があります。

以上がMySQL で時間を変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。