はじめに
MySQLには、データを操作できる多くの組み込み関数が付属しています。これらの関数は、日付関数、文字列関数、数学関数などのカテゴリにグループ化されています。
日付関数は、MySQLで日付、時刻、および日時の式を変更、計算、および変換する方法に関する多数のオプションを提供します。
このチュートリアルでは、MySQLの日付と時刻の関数と、それらがどのように機能するかについて、実際の例で学習します。
日付関連の関数
CURDATEまたはCURRENT_DATE
CURDATE
を使用して、現在の日付を「YYY-MM-DD」または「YYYYMMDD」形式で返します。 またはCURRENT_DATE
コマンド。
基本構文:
CURDATE();
たとえば、次の場合:
SELECT CURDATE();
MySQLは、次の形式で現在の日付で応答します:
2021-01-17
日付
DATE
を使用して、日時式から日付を返します コマンド。
基本構文:
DATE(datetime);
たとえば、次の場合:
SELECT DATE('2021-01-17 10:12:16');
出力は次のとおりです。
2021-01-17
DATE_ADDまたはADDDATE
DATE_ADD
を使用して、日付式に時刻/日付値を追加します またはADDDATE
機能。
基本構文:
DATE_ADD(date, INTERVAL value unit);
日付を置き換えます 時刻/日付を追加する日付式を使用します。 値の単位 追加する日時です。値の単位とともに数値で表現する必要があります。
ユニット 可能性があります:
- 2番目
- 分
- 時間
- 日
- 週
- 月
- 四半期
- 年
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
たとえば、次の場合:
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE);
出力は結果を返します:
2021-01-17 07:34:21
DATE_FORMAT
DATE_FORMAT
を使用して日付をフォーマットします 。
基本構文:
DATE_FORMAT(date, format);
日付 は再フォーマットする日付式ですが、フォーマット 次の指定子の組み合わせです:
たとえば、次の場合:
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y');
出力には結果が表示されます:
Sunday January 2021
DATE_SUBまたはSUBDATE
DATE_SUB
を使用して、時刻/日付の値を日付式に減算します またはSUBDATE
機能。
基本的な構文:
DATE_SUB(date, INTERVAL value unit);
日付を置き換えます 減算する日付式を使用します。 値の単位 減算する日時です。値の単位とともに数値で表す必要があります。
ユニットタイプのリストを検索する DATE_ADDセクションにあります。
たとえば、次の場合:
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR);
出力は結果を返します:
2021-01-17 06:14:21
DATEDIFF
DATEDIFF
を使用して2つの日付式の間の日数を返します 機能。
基本的な構文:
DATEDIFF(date1,date2);
例:
SELECT DATEDIFF('2021-01-23','2021-01-14');
結果を返します:
9
抜粋
日付/日時式の一部を抽出するには、 EXTRACT
を使用します 機能。
基本構文:
EXTRACT(unit FROM date);
コマンドでは、どのユニットを指定する必要があります 指定した日付から抽出する 。
DATE_ADDの説明で使用できる単位のリストを見つけてください。
たとえば、実行する場合:
SELECT EXTRACT(DAY FROM '2021-01-26');
結果が得られます:
26
GET_FORMAT
GET_FORMAT
の引数で指定されたフォーマット文字列(指定子の組み合わせ)を返します 。この関数は、 DATE_FORMAT
でよく使用されます 。
基本的な構文:
GET_FORMAT(DATE/TIME/DATETIME,format)
この関数は、日付、時刻、および日時の式で使用します。
形式 可能性があります:
- 「EUR」
- 「USA」
- 「JIS」
- 「ISO」
- 「内部」
GET_FORMAT
を使用して取得できる結果の数には限りがあります。 働き。以下に、すべての関数呼び出しとその結果のリストを示します。
たとえば、関数を DATE_FORMAT
と組み合わせることができます。 、次の例のように:
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR'));
結果は次のとおりです:
26.01.2021
MAKEDATE
MAKEDATE
を使用して、指定した年と日から日付式を返します 機能。
基本構文:
MAKEDATE(year,day);
たとえば、次の場合:
SELECT MAKEDATE(2021,34);
出力には結果が表示されます:
2021-02-03
STR_TO_DATE
STR_TO_DATE
を使用して文字列から日付をフォーマットします 日付/日時の値を返します。
基本構文:
STR_TO_DATE(string, format);
文字列 フォーマットが再フォーマットしたいものです 文字列の各要素を説明する指定子の組み合わせです。 。
指定子とその意味のリストは、DATE_FORMATセクションにあります。
たとえば、次の場合:
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y');
出力は次のようになります:
2021-01-25
SYSDATE
現在の日付と時刻を「YYYY-MM-DDhh:mm:ss」または「YYYYMMDDHHMMSS.uuuuuu」の形式で返すには、 SYSDATE
を使用します。 機能。
基本構文:
SYSDATE();
fsp
を追加できます 小数秒の精度(0〜6)を含める引数。その場合、構文は SYSDATE(fsp);
です。 。
以下に示すコマンド:
SELECT SYSDATE();
この時点で結果が得られます:
2021-01-25 20:21:04
UTC_DATE
UTC_DATE
を使用して、現在の協定世界時(UTC)の日付値を「YYYY-MM-DD」または「YYYYMMDD」形式で返します。 機能。
基本構文:
UTC_DATE();
たとえば、次のコマンドを実行します。
SELECT UTC_DATE();
現在の日付を返します:
2021-01-25
時間関連の関数
追加時間
ADDTIME
を使用して、指定した時刻/日時式に時間間隔を追加します 。
基本構文:
ADDTIME(datetime, timevalue)
たとえば、次の場合:
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006');
結果が得られます:
2021-01-25 11:27:43.000027
CONVERT_TZ
ADDTIME
を使用して、時刻/日時式をあるタイムゾーンから別のタイムゾーンに変換します 機能。
基本構文:
CONVERT_TZ(datetime, from_timezone,to_timezone)
たとえば、実行する場合:
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00');
MySQLは、指定された日時を+10:00タイムゾーンに変換します:
2021-01-25 20:12:00
CURTIMEまたはCURRENT_TIME
CURTIME
を使用して現在の時刻を返します またはCURRENT_TIME
働き。結果は、「hh:mm:ss」または「hhmmss」形式で時刻を返します。
基本構文:
CURTIME();
fsp
を追加することで、小数秒の精度(0から6)を含めることができます。 引数。
たとえば、次のコマンドは、現在の時刻を小数秒の精度で表示します。
CURTIME(3);
出力は次の結果で応答します:
15:19:07.340
時間
HOUR
を使用して、指定した時刻/日時の時間を返します 機能。
基本構文:
HOUR(datetime);
たとえば、次の場合:
SELECT HOUR('08:40:07');
結果は次のとおりです。
8
MAKETIME
MAKETIME
を使用して、指定した時間、分、秒の値から時間式を返します 機能。
基本構文:
MAKETIME(hour, minute, second);
たとえば、次のように実行できます。
SELECT MAKETIME(09,25,00);
出力が表示される場所:
09:25:00
マイクロ秒
MICROSECOND
を使用して指定された時刻/日時式のマイクロ秒を返します 。
基本構文:
MICROSECOND(datetime);
たとえば、次のように実行できます。
SELECT MICROSECOND('2021-01-21 10:23:44.000040');
結果は次のとおりです:
40
分
MINUTE
を使用して、指定された時刻/日時式の分を返します 機能。
基本構文:
MINUTE(datetime);
たとえば、次のコマンドを実行した場合:
SELECT MINUTE('10:23:44');
結果は次のとおりです。
23
SEC_TO_TIME
SEC_TO_TIME
を使用して、指定された秒値から時間値を返します 機能。
基本構文:
SEC_TO_TIME(seconds);
たとえば、次のコマンドを実行した場合:
SELECT SEC_TO_TIME(8897);
出力は次のとおりです。
02:28:17
サブタイム
SUBTIME
を使用して、時刻/日時式から時刻値を減算します 機能。
基本構文:
SUBTIME(datetime,timevalue);
たとえば、実行する場合:
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1');
出力は次のとおりです。
2021-01-21 19:03:59
時間
日時式から時刻の値を返すには、 TIME
を使用します 機能。
基本構文:
TIME(datetime);
例:
SELECT TIME('2021-01-22 13:38:10');
結果が得られます:
13:38:10
TIME_FORMAT
TIME_FORMAT
を使用して、時間値を指定された形式にフォーマットします 。
基本構文:
TIME_FORMAT(time,format);
形式 指定子の組み合わせです。すべての指定子とその意味のリストは、DATE_FORMAT関数の説明にあります。
たとえば、次のコマンドを実行します:
SELECT TIME_FORMAT('13:45:10','%h %i %s %p');
次の出力が得られます:
01 45 10 PM
TIME_TO_SEC
秒に変換された時間値を返すには、 TIME_TO_SEC
を使用します 。
基本構文:
TIME_TO_SEC(timevalue);
たとえば、実行する場合:
SELECT TIME_TO_SEC('13:48:05');
結果は次のとおりです。
49685
TIMEDIFF
TIMEDIFF
を使用して、2つの時刻/日時式の差を計算します 働き。この場合、結果は常に時間値になります。
基本構文:
TIMEDIFF(datetime1,datetime2);
たとえば、実行する場合:
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16');
出力は次を返します:
240:00:01
TO_SECONDS
日付/日時式を秒に変換するには、関数 TO_SECONDS
を使用します 。結果は、0から指定された日時までの秒数です。
基本構文:
TO_SECONDS(datetime);
たとえば、次のコマンドを実行した場合:
SELECT TO_SECONDS('2021-01-21 08:10:17');
結果は次のとおりです。
63778435817
UTC_TIME
UTC_TIME
を使用して現在のUTC時刻の値を返します 。時間の値を「HH:MM:SS」または「HHMMSS」の形式で返します。
基本構文:
UTC_TIME();
たとえば、次の場合:
SELECT UTC_TIME();
この時点で得られる結果は次のとおりです。
19:45:21
タイムスタンプ関連の関数
CURRENT_TIMESTAMPまたはLOCALTIMESTAMP
現在の日付と時刻を返すには、 CURRENT_TIMESTAMP
を使用します またはLOCALTIMESTAMP
。結果は「YYYY-MM-DDHH-MM-SS」または「YYYYMMDDHHMMSS.uuuuuu」形式で返されます。
基本構文:
CURRENT_TIMESTAMP();
たとえば、次のコマンドを実行します:
SELECT CURRENT_TIMESTAMP();
現在の結果は次のとおりです。
2021-01-25 19:53:55
FROM_UNIXTIME
FROM_UNIXTIME
を使用してUnix形式のタイムスタンプから日付/日時式を返します。 。
基本構文:
FROM_UNIXTIME(unix_timestamp);
形式を指定する引数なしでコマンドを実行すると、結果は「YYYY-MM-DDhh:mm:ss」または「YYYYMMDDhhmmss」形式で返されます。
たとえば、次の場合:
SELECT FROM_UNIXTIME(1611231404);
結果が得られます:
2021-01-21 12:16:44
タイムスタンプ
日付または日時の値から日時式を返すには、関数 TIMESTAMP
を使用します。 。 2つの引数を追加すると、出力は引数の合計を返します。
基本構文:
TIMESTAMP(datetime);
TIMESTAMP(datetime,time);
たとえば、次のコマンドを実行すると:
SELECT TIMESTAMP('2021-01-13','30:50:00');
出力には結果が表示されます:
2021-01-14 06:50:00
TIMESTAMPADD
TIMESTAMPADD
を使用して、日付/日時式に時刻の値を追加します 機能。
基本構文:
TIMESTAMPADD(unit,value,datetime);
ユニット 可能性があります:
- FRAC_SECOND
- 2番目
- 分
- 時間
- 日
- 週
- 月
- 四半期
- 年
たとえば、次のコマンドは、指定された日付に3日を追加します。
SELECT TIMESTAMPADD(DAY,3,'2021-01-18');
したがって、出力には次のように表示されます。
2021-01-21
TIMESTAMPDIFF
2つの日付/日時式の差を計算するには、 TIMESTAMPDIFF
を使用します 。この関数は、指定された単位で1つの日時値を他の値から減算します。
基本構文:
TIMESTAMPDIFF(unit,datetime1,datetime2);
さまざまなタイプのユニットのリストを見つけることができます。上のセクションのリストを確認してください。
たとえば、次の2つの日付の差を日数で計算できます。
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18');
結果は次のとおりです:
13
UNIX_TIMESTAMP
UNIX_TIMESTAMP
を使用して日付/日時式からUnixタイムスタンプを返します 働き。 Unixタイムスタンプは、指定された日時から「1970-01-0100:00:00」UTCまでの秒数を表します。
基本構文:
UNIX_TIMESTAMP(datetime);
たとえば、次のコマンドを実行します。
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00');
結果が得られます:
1611595980
UTC_TIMESTAMP
UTC_TIMESTAMP
を使用して現在のUTC日付と時刻の値を返します 。日時の値を「YYYY-MM-DDHH:MM:SS」または「YYYYMMDDHHMMSS.uuuuuu」の形式で返します。
基本構文:
UTC_TIMESTAMP(datetime);
たとえば、次のコマンド:
SELECT UTC_TIMESTAMP();
以下と同じ形式で出力を返します:
2021-01-25 23:18:06
日/週/月/年関連の関数
日
DAY
を使用して、指定された日時式から月の日を返します 機能。
基本構文:
DAY(datetime);
以下のコマンドを実行した場合:
SELECT DAY('2021-01-26 12:32:00');
出力は結果を返します:
26
DAYNAME
DAYNAME
を使用して、指定した日時式から曜日の名前を返します 機能。
基本構文:
DAYNAME(datetime);
たとえば、次のコマンドを実行すると:
SELECT DAYNAME('2021-01-26 12:32:00');
MySQLは結果で応答します:
Tuesday
DAYOFMONTH
DAYOFMONTH
を使用して指定された日時式から月の日を返します 。
基本構文:
DAYOFMONTH(datetime);
たとえば、次のコマンドを実行すると:
SELECT DAYOFMONTH('2021-01-26 12:32:00');
MySQLは結果で応答します:
26
DAYOFWEEK
DAYOFWEEK
を使用して、指定された日時式から曜日を数値で返します 。
基本構文:
DAYOFWEEK(datetime);
以下のコマンドを実行します:
SELECT DAYOFWEEK('2021-01-26 12:32:00');
応答します:
3
DAYOFYEAR
関数DAYOFYEAR
を使用して、指定された日時式から1年の日を返します。 。
基本構文:
DAYOFYEAR(datetime);
たとえば、次のコマンドを実行すると:
SELECT DAYOFYEAR('2021-02-26 12:32:00');
出力は次の結果になります:
57
FROM_DAYS
関数FROM_DAYS
を使用して、日の数値表現から日付式を返します 。
基本構文:
FROM_DAYS(number);
例:実行中:
SELECT FROM_DAYS(738181);
MySQLプロンプトは次の結果で応答します:
2021-01-26
LAST_DAY
LAST_DAY
を使用して、指定した日時から月末日を返します 機能。
基本構文:
LAST_DAY(date);
たとえば、次のコマンドを実行した場合:
SELECT LAST_DAY('2021-01-26');
出力は次のように応答します:
31
月
MONTH
を使用して、指定した日時から月(数値)を返します 機能。
基本構文:
MONTH(date);
たとえば、実行する場合:
SELECT MONTH('2021-01-26');
MySQLは次のように応答します:
1
月の名前
MONTHNAME
を使用して、指定した日時から月の名前を返します 機能。
基本構文:
MONTHNAME(date);
コマンドを実行した場合:
SELECT MONTH('2021-01-26');
次の応答があります:
January
PERIOD_ADD
指定した月数を期間に追加するには、 PERIOD_ADD
を使用します 機能。
基本構文:
PERIOD_ADD(period,number);
期間 はYYMMまたはYYYYMMの形式で定義され、数値は 追加する月数です。
例:
SELECT PERIOD_ADD(202101, 5);
結果が得られます:
202106
PERIOD_DIFF
PERIOD_DIFF
を使用して2つの期間の間の月数を返します 。
基本構文:
PERIOD_DIFF(period1,period2);
各期間 YYMMまたはYYYYMMの形式である必要があります。
例:
SELECT PERIOD_DIFF(202101, 202003);
結果を生成します:
10
四半期
指定された日時から四半期を返すには、関数 QUARTER
を使用します。 。
基本構文:
QUARTER(date);
たとえば、次のコマンドを実行します。
SELECT QUARTER('2021-01-26');
出力は次のように応答します:
1
TO_DAYS
日付/日時式をTO_DAYS
を使用して日の数値表現に変換します 。
基本構文:
TO_DAYS(datetime);
たとえば、次のコマンドの場合:
SELECT TO_DAYS('2021-01-26');
結果は:
738181
週
指定した日付から週番号を返すには、関数 WEEK
を使用します 。
基本構文:
WEEK(date);
モードを含めることもできます 引数。この場合、構文は WEEK(date,mode);
です。 。
mode引数は、週の開始日を指定します。引数がない場合は、 0
を使用します デフォルトではモードです。
次の表で、各モードについて説明します。
たとえば、次の場合:
SELECT WEEK('2021-01-26');
出力は次のように応答します:
4
WEEKDAY
WEEKDAY
を使用して、指定した日付からの曜日を数値で返します 。各数字は平日の1つを表します–月曜日 は0
、火曜日 1
です 、など。
基本構文:
WEEKDAY(date);
たとえば、次のコマンドを実行します。
SELECT WEEKDAY('2021-01-26');
応答します:
1
WEEKOFYEAR
1年の週数を返すには、 WEEKDAY
を使用します 機能。
基本構文:
WEEKOFYEAR(date);
たとえば、次のコマンドを実行すると:
SELECT WEEKOFYEAR('2021-01-26');
出力には結果が表示されます:
3
年
YEAR
を使用して指定された日付から年を返します 機能。
基本構文:
YEAR(date);
次のコマンドを実行した場合:
SELECT YEAR('2021-01-26');
結果が得られます:
2021
YEARWEEK
YEARWEEK
を使用して、指定された日付から年と週の番号を返します 機能。
基本構文:
YEARWEEK(date);
mode
を追加できます 週が始まる日を指定するための基本構文への引数。モードとその意味のリストを確認するには、 WEEK
の表を確認してください。 機能。
たとえば、次のコマンドを実行すると:
SELECT YEARWEEK('2021-01-26');
出力は次のように表示されます:
202104