はじめに
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