SQL-日付関数

次の表に、SQLで使用できるすべての重要な日付と時刻に関連する関数のリストを示します。RDBMSでサポートされている他のさまざまな機能があります。与えられたリストはMySQLRDBMSに基づいています。

シニア番号 機能と説明
1 ADDDATE()

日付を追加します

2 ADDTIME()

時間を追加します

3 CONVERT_TZ()

あるタイムゾーンから別のタイムゾーンに変換します

4 CURDATE()

現在の日付を返します

5 CURRENT_DATE()、CURRENT_DATE

CURDATE()の同義語

6 CURRENT_TIME()、CURRENT_TIME

CURTIME()の同義語

7 CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP

NOW()の同義語

8 CURTIME()

現在の時刻を返します

9 DATE_ADD()

2つの日付を追加します

10 DATE_FORMAT()

指定された日付をフォーマットします

11 DATE_SUB()

2つの日付を減算します

12 日付()

日付または日時式の日付部分を抽出します

13 DATEDIFF()

2つの日付を減算します

14 日()

DAYOFMONTH()の同義語

15 DAYNAME()

平日の名前を返します

16 DAYOFMONTH()

月の日を返します(1-31)

17 曜日()

引数の平日インデックスを返します

18 DAYOFYEAR()

年の日を返します(1-366)

19 エキス

日付の一部を抽出します

20 FROM_DAYS()

日番号を日付に変換します

21 FROM_UNIXTIME()

日付をUNIXタイムスタンプとしてフォーマットします

22 HOUR()

時間を抽出します

23 LAST_DAY

引数の月末日を返します

24 LOCALTIME()、LOCALTIME

NOW()の同義語

25 LOCALTIMESTAMP、LOCALTIMESTAMP()

NOW()の同義語

26 MAKEDATE()

年と日から日付を作成します

27 時間を作る

時間を作る()

28 MICROSECOND()

引数からマイクロ秒を返します

29 分()

引数から分を返します

30 月()

渡された日付から月を返します

31 MONTHNAME()

月の名前を返します

32 NOW()

現在の日付と時刻を返します

33 PERIOD_ADD()

年月に期間を追加します

34 PERIOD_DIFF()

期間間の月数を返します

35 四半期()

日付引数から四半期を返します

36 SEC_TO_TIME()

秒を「HH:MM:SS」形式に変換します

37 SECOND()

2番目(0-59)を返します

38 STR_TO_DATE()

文字列を日付に変換します

39 SUBDATE()

3つの引数を指定して呼び出された場合、DATE_SUB()の同義語

40 SUBTIME()

時間を差し引く

41 SYSDATE()

関数が実行される時間を返します

42 TIME_FORMAT()

時間としてのフォーマット

43 TIME_TO_SEC()

秒に変換された引数を返します

44 時間()

渡された式の時間部分を抽出します

45 TIMEDIFF()

時間を差し引く

46 タイムスタンプ()

この関数は、単一の引数を使用して、日付または日時式を返します。2つの引数を使用すると、引数の合計

47 TIMESTAMPADD()

日時式に間隔を追加します

48 TIMESTAMPDIFF()

日時式から間隔を減算します

49 TO_DAYS()

日に変換された日付引数を返します

50 UNIX_TIMESTAMP()

UNIXタイムスタンプを返します

51 UTC_DATE()

現在のUTC日付を返します

52 UTC_TIME()

現在のUTC時刻を返します

53 UTC_TIMESTAMP()

現在のUTC日付と時刻を返します

54 週間()

週番号を返します

55 平日()

平日のインデックスを返します

56 WEEKOFYEAR()

日付の暦週を返します(1-53)

57 年()

年を返します

58 YEARWEEK()

年と週を返します

ADDDATE(date、INTERVAL expr unit)、ADDDATE(expr、days)

2番目の引数のINTERVAL形式で呼び出された場合、ADDDATE()はDATE_ADD()の同義語です。関連する関数SUBDATE()は、DATE_SUB()の同義語です。INTERVALユニット引数の詳細については、DATE_ADD()の説明を参照してください。

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2番目の引数のdays形式で呼び出されると、MySQLはそれをexprに追加される整数の日数として扱います。

mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ADDTIME(expr1、expr2)

ADDTIME()はexpr2をexpr1に追加し、結果を返します。expr1は時刻または日時の式であり、expr2は時刻の式です。

mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONVERT_TZ(dt、from_tz、to_tz)

これにより、日時値dtがfrom_tzで指定されたタイムゾーンからto_tzで指定されたタイムゾーンに変換され、結果の値が返されます。引数が無効な場合、この関数はNULLを返します。

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2004-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2004-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURDATE()

関数が文字列で使用されているか数値コンテキストで使用されているかに応じて、現在の日付を「YYYY-MM-DD」またはYYYYMMDD形式の値として返します。

mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE()                                               |
+---------------------------------------------------------+
| 1997-12-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0                                           |
+---------------------------------------------------------+
| 19971215                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_DATEおよびCURRENT_DATE()

CURRENT_DATEとCURRENT_DATE()は、CURDATE()の同義語です。

CURTIME()

関数が文字列で使用されているか数値コンテキストで使用されているかに応じて、現在の時刻を「HH:MM:SS」またはHHMMSS形式の値として返します。値は現在のタイムゾーンで表されます。

mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME()                                               |
+---------------------------------------------------------+
| 23:50:26                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0                                           |
+---------------------------------------------------------+
| 235026                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_TIMEおよびCURRENT_TIME()

CURRENT_TIMEとCURRENT_TIME()は、CURTIME()の同義語です。

CURRENT_TIMESTAMPおよびCURRENT_TIMESTAMP()

CURRENT_TIMESTAMPとCURRENT_TIMESTAMP()は、NOW()の同義語です。

DATE(expr)

日付または日時式exprの日付部分を抽出します。

mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
|  2003-12-31                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATEDIFF(expr1、expr2)

DATEDIFF()はexpr1を返します。expr2は、ある日付から別の日付までの日数で表されます。expr1とexpr2はどちらも、日付または日付と時刻の式です。値の日付部分のみが計算に使用されます。

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30')            |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_ADD(date、INTERVAL expr unit)、DATE_SUB(date、INTERVAL expr unit)

これらの関数は日付演算を実行します。ザ・date開始日を指定するDATETIMEまたはDATE値です。ザ・expr開始日から加算または減算する間隔値を指定する式です。exprは文字列です。負の間隔の場合は「-」で始まる場合があります。

A unit 式を解釈する単位を示すキーワードです。

ザ・ INTERVAL キーワードと単位指定子では大文字と小文字は区別されません。

次の表は、各単位値のexpr引数の予想される形式を示しています。

単位値 期待されるexprFormat
マイクロ秒 マイクロ秒
2番目 セコンド
議事録
時間 時間
日々
週間
四半期 四半期
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 「MINUTES.MICROSECONDS」
MINUTE_SECOND 「分:秒」
HOUR_MICROSECOND 「HOURS.MICROSECONDS」
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 「時間:分」
DAY_MICROSECOND 「DAYS.MICROSECONDS」
DAY_SECOND 「DAYSHOURS:MINUTES:SECONDS」
DAY_MINUTE 「DAYSHOURS:MINUTES」
DAY_HOUR 「DAYSHOURS」
年月 「年-月」

その価値 QUARTER そして WEEKMySQL5.0.0から入手できます。バージョン。

mysql> SELECT DATE_ADD('1997-12-31 23:59:59', 
   -> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 1998-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 1999-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT(日付、フォーマット)

このコマンドは、フォーマット文字列に従って日付値をフォーマットします。

次の指定子をフォーマット文字列で使用できます。フォーマット指定子文字の前に「%」文字が必要です。

シニア番号 指定子と説明
1

%a

平日略称(日・土)

2

%b

月の略称(1月〜12月)

3

%c

月、数値(0..12)

4

%D

英語の接尾辞が付いた月の日(0日、1日、2日、3日、。)

5

%d

月の日、数値(00..31)

6

%e

月の日、数値(0..31)

7

%f

マイクロ秒(000000..999999)

8

%H

時間(00..23)

9

%h

時間(01..12)

10

%I

時間(01..12)

11

%i

分、数値(00..59)

12

%j

曜日(001..366)

13

%k

時間(0..23)

14

%l

時間(1..12)

15

%M

月名(1月〜12月)

16

%m

月、数値(00..12)

17

%p

午前または午後

18

%r

時間、12時間(hh:mm:ssの後にAMまたはPMが続く)

19

%S

秒(00..59)

20

%s

秒(00..59)

21

%T

時間、24時間(hh:mm:ss)

22

%U

週(00..53)、ここで日曜日は週の最初の日です

23

%u

週(00..53)、月曜日は週の最初の日です

24

%V

週(01..53)、ここで日曜日は週の最初の日です。%Xで使用

25

%v

週(01..53)。月曜日が週の最初の日です。%xで使用

26

%W

平日名(日曜日..土曜日)

27

%w

曜日(0 =日曜日..6 =土曜日)

28

%X

日曜日が週の最初の日である週の年、数値、4桁。%Vで使用

29

%x

月曜日が週の最初の日である週の年、数値、4桁。%vで使用

30

%Y

年、数字、4桁

31

%y

年、数値(2桁)

32

%%

リテラル。%。キャラクター

33

%x

x、any.xの場合。上記にリストされていない

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 1997                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_SUB(date、INTERVAL expr unit)

これは、DATE_ADD()関数に似ています。

DAY(日付)

DAY()は、DAYOFMONTH()関数の同義語です。

DAYNAME(日付)

日付の平日の名前を返します。

mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05')                                   |
+---------------------------------------------------------+
| Thursday                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFMONTH(日付)

0から31の範囲で、日付の日を返します。

mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03')                                |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFWEEK(日付)

日付の平日インデックスを返します(1 =日曜日、2 =月曜日、。、7 =土曜日)。これらのインデックス値は、ODBC標準に対応しています。

mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03')                                  |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFYEAR(日付)

1から366の範囲で、日付の年の日を返します。

mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03')                                 |
+---------------------------------------------------------+
| 34                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

EXTRACT(単位開始日)

EXTRACT()関数は、DATE_ADD()またはDATE_SUB()と同じ種類の単位指定子を使用しますが、日付演算を実行するのではなく、日付から部分を抽出します。

mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02')                         |
+---------------------------------------------------------+
| 1999                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03')          |
+---------------------------------------------------------+
| 199907                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FROM_DAYS(N)

日番号Nを指定すると、DATE値を返します。

mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669)                                       |
+---------------------------------------------------------+
| 1997-10-07                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note−古い日付には注意してFROM_DAYS()を使用してください。グレゴリオ暦(1582)の出現より前の値での使用は意図されていません。

FROM_UNIXTIME(unix_timestamp)

FROM_UNIXTIME(unix_timestamp、format)

の表現を返します unix_timestamp関数が文字列で使用されているか数値コンテキストで使用されているかに応じて、 'YYYY-MM-DD HH:MM:SSまたはYYYYMMDDHHMMSS形式の値としての引数。値は現在のタイムゾーンで表されます。unix_timestamp引数は、内部タイムスタンプ値であり、UNIX_TIMESTAMP() 関数。

フォーマットが指定されている場合、結果はフォーマット文字列に従ってフォーマットされます。フォーマット文字列は、のエントリにリストされているのと同じ方法で使用されます。 DATE_FORMAT() 関数。

mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580)                                |
+---------------------------------------------------------+
| 1997-10-04 22:23:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

HOUR(時間)

時間の時間を返します。時刻値の戻り値の範囲は0〜23です。ただし、実際にはTIME値の範囲がはるかに大きいため、HOURは23より大きい値を返すことができます。

mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03')                                        |
+---------------------------------------------------------+
| 10                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LAST_DAY(日付)

日付または日時の値を取り、その月の最終日の対応する値を返します。引数が無効な場合はNULLを返します。

mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05')                                  |
+---------------------------------------------------------+
| 2003-02-28                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOCALTIMEおよびLOCALTIME()

LOCALTIMEとLOCALTIME()は、NOW()の同義語です。

LOCALTIMESTAMPおよびLOCALTIMESTAMP()

LOCALTIMESTAMPとLOCALTIMESTAMP()は、NOW()の同義語です。

MAKEDATE(年、日)

指定された年と日の値で日付を返します。dayofyearの値は0より大きくなければなりません。そうでない場合、結果はNULLになります。

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32)                    |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01'                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MAKETIME(時、分、秒)

時間、分、秒の引数から計算された時間値を返します。

mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30)                                      |
+---------------------------------------------------------+
| '12:15:30'                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MICROSECOND(expr)

時刻または日時式(expr)からのマイクロ秒を、0〜999999の範囲の数値として返します。

mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MINUTE(時間)

0から59の範囲の時間の分を返します。

mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03')                             |
+---------------------------------------------------------+
| 5                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTH(日付)

日付の月を0から12の範囲で返します。

mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTHNAME(日付)

日付の月のフルネームを返します。

mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05')                                 |
+---------------------------------------------------------+
| February                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

NOW()

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、現在の日付と時刻を「YYYY-MM-DD HH:MM:SS」またはYYYYMMDDHHMMSS形式の値として返します。この値は、現在のタイムゾーンで表されます。

mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW()                                                   |
+---------------------------------------------------------+
| 1997-12-15 23:50:26                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_ADD(P、N)

期間PにNか月を追加します(YYMMまたはYYYYMMの形式)。YYYYMMの形式で値を返します。期間引数Pは日付値ではないことに注意してください。

mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2)                                      |
+---------------------------------------------------------+
| 199803                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_DIFF(P1、P2)

期間P1とP2の間の月数を返します。これらの期間P1およびP2は、YYMMまたはYYYYMMの形式である必要があります。期間引数P1およびP2は日付値ではないことに注意してください。

mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703)                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

QUARTER(日付)

1から4の範囲で、日付の年の四半期を返します。

mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2回目)

0から59の範囲の時間の秒を返します。

mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEC_TO_TIME(秒)

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、秒引数を時間、分、秒に変換して、「HH:MM:SS」またはHHMMSS形式の値として返します。

mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378)                                       |
+---------------------------------------------------------+
| 00:39:38                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

STR_TO_DATE(str、format)

これは、DATE_FORMAT()関数の逆です。文字列strとフォーマット文字列フォーマットを取ります。フォーマット文字列に日付と時刻の両方の部分が含まれている場合、STR_TO_DATE()関数はDATETIME値を返します。それ以外の場合、文字列に日付または時刻の部分のみが含まれている場合は、DATEまたはTIMEの値を返します。

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y')                   |
+---------------------------------------------------------+
| 2004-04-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBDATE(date、INTERVAL expr unit)およびSUBDATE(expr、days)

2番目の引数のINTERVAL形式で呼び出された場合、SUBDATE()はDATE_SUB()の同義語です。INTERVALユニット引数の詳細については、DATE_ADD()の説明を参照してください。

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBTIME(expr1、expr2)

SUBTIME()関数はexpr1を返します。expr2は、expr1と同じ形式の値として表されます。expr1値は時刻または日時式であり、expr2値は時刻式です。

mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
   -> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'...                 |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SYSDATE()

関数が文字列で使用されているか数値コンテキストで使用されているかに応じて、現在の日付と時刻を「YYYY-MM-DD HH:MM:SS」またはYYYYMMDDHHMMSS形式の値として返します。

mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE()                                               |
+---------------------------------------------------------+
| 2006-04-12 13:47:44                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME(expr)

時間または日時式の時間部分を抽出します expr そしてそれを文字列として返します。

mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
| 01:02:03                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMEDIFF(expr1、expr2)

TIMEDIFF()関数はexpr1を返します。expr2は時間値として表されます。これらのexpr1およびexpr2の値は時刻または日付と時刻の式ですが、両方とも同じタイプである必要があります。

mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
   -> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'.....              |
+---------------------------------------------------------+
|  46:58:57.999999                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMP(expr)、TIMESTAMP(expr1、expr2)

この関数は、単一の引数を使用して、日付または日時式exprを日時値として返します。2つの引数を使用して、時刻式expr2を日付または日時式に追加します。expr1 結果を日時値として返します。

mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31')                                 |
+---------------------------------------------------------+
| 2003-12-31 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPADD(unit、interval、datetime_expr)

この関数は、整数式の間隔を日付または日時式に追加します datetime_expr。間隔の単位は、次のいずれかの値であるunit引数によって指定されます。

  • FRAC_SECOND
  • 2番目、1分
  • 時間、日
  • WEEK
  • MONTH
  • QUARTERまたは
  • YEAR

単位値は、示されているキーワードの1つを使用するか、接頭部SQL_TSI_を付けて指定できます。

たとえば、DAYとSQL_TSI_DAYはどちらも有効です。

mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02')                     |
+---------------------------------------------------------+
| 2003-01-02 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF(unit、datetime_expr1、datetime_expr2)

日付または日時式datetime_expr1とdatetime_expr2の間の整数の差を返します。結果の単位は、unit引数で指定されます。ユニットの有効な値は、TIMESTAMPADD()関数の説明にリストされている値と同じです。

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')          |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_FORMAT(time、format)

この関数はDATE_FORMAT()関数と同様に使用されますが、フォーマット文字列には、時間、分、秒のフォーマット指定子のみを含めることができます。

時間値に23より大きい時間部分が含まれている場合、%H および%k 時間形式指定子は、通常の0〜23の範囲よりも大きい値を生成します。他の時間形式指定子は、12を法とする時間値を生成します。

mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
+---------------------------------------------------------+
| 100 100 04 04 4                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_TO_SEC(時間)

秒に変換されたtime引数を返します。

mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00')                                 |
+---------------------------------------------------------+
| 80580                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

今日の日付)

日付を指定すると、日番号(0年からの日数)を返します。

mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501)                                         |
+---------------------------------------------------------+
| 728779                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UNIX_TIMESTAMP()、UNIX_TIMESTAMP(日付)

引数なしで呼び出された場合、この関数はUnixタイムスタンプ( '1970-01-01 00:00:00' UTCからの秒数)を符号なし整数として返します。UNIX_TIMESTAMP()がdate引数を指定して呼び出された場合、引数の値は「1970-01-0100:00:00」UTCからの秒数として返されます。日付は、DATE文字列、DATETIME文字列、TIMESTAMP、またはYYMMDDまたはYYYYMMDDの形式の数値です。

mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP()                                        |
+---------------------------------------------------------+
| 882226357                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00')                   |
+---------------------------------------------------------+
| 875996580                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_DATE、UTC_DATE()

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、現在のUTC日付を「YYYY-MM-DD」またはYYYYMMDD形式の値として返します。

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0                              |
+---------------------------------------------------------+
| 2003-08-14, 20030814                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIME、UTC_TIME()

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、現在のUTC時刻を「HH:MM:SS」またはHHMMSS形式の値として返します。

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0                              |
+---------------------------------------------------------+
| 18:07:53, 180753                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIMESTAMP、UTC_TIMESTAMP()

関数が文字列で使用されているか数値コンテキストで使用されているかに応じて、現在のUTC日付と時刻を「YYYY-MM-DDHH:MM:SS」またはYYYYMMDDHHMMSS形式の値として返します。

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0                    |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEK(date [、mode])

この関数は、日付の週番号を返します。WEEK()の2つの引数形式を使用すると、週を日曜日と月曜日のどちらで開始するか、および戻り値を0から53または1から53の範囲にするかどうかを指定できます。mode引数を省略した場合、 default_week_formatシステム変数の値が使用されます

モード 週の最初の日 範囲 1週目は最初の週です。
0 日曜日 0-53 今年は日曜日
1 月曜 0-53 今年は3日以上
2 日曜日 1-53 今年は日曜日
3 月曜 1-53 今年は3日以上
4 日曜日 0-53 今年は3日以上
5 月曜 0-53 今年の月曜日
6 日曜日 1-53 今年は3日以上
7 月曜 1-53 今年の月曜日
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

平日(日付)

日付の平日インデックスを返します(0 =月曜日、1 =火曜日、。6=日曜日)。

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00')                          |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKOFYEAR(日付)

日付の暦週を1から53の範囲の数値として返します。WEEKOFYEAR()は、WEEK(date、3)と同等の互換性関数です。

mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20')                                |
+---------------------------------------------------------+
| 8                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEAR(日付)

日付の年を1000から9999の範囲で返し、.zeroの場合は0を返します。日付。

mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03')                                        |
+---------------------------------------------------------+
| 1998                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEARWEEK(日付)、YEARWEEK(日付、モード)

日付の年と週を返します。mode引数は、WEEK()関数のmode引数とまったく同じように機能します。結果の年は、その年の最初と最後の週の日付引数の年とは異なる場合があります。

mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
+---------------------------------------------------------+
| 198653                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note −週番号は、オプションの引数0または1に対してWEEK()関数が返すもの(0)とは異なります。これは、WEEK()が指定された年のコンテキストで週を返すためです。