> ⑬日付関数 – ネットワークエンジニアチュートリアル

⑬日付関数

Contents

スポンサーリンク

無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!

日付関数

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



Sr.No. 機能と説明
1 ADDDATE()日付を追加する
2 ADDTIME()時間を追加する
3 CONVERT_TZ()あるタイムゾーンから別のタイムゾーンに変換する
4 CURDATE()現在の日付を返します。
5 CURRENT_DATE()、CURRENT_DATECURDATE()の同義語
6 CURRENT_TIME()、CURRENT_TIMECURTIME()の同義語
7 CURRENT_TIMESTAMP()、CURRENT_TIMESTAMPNOW()の類義語
8 CURTIME()現在の時刻を返します。
9 DATE_ADD()日付を追加する
10 DATE_FORMAT()指定された日付の書式設定
11 DATE_SUB()2つの日付を引く
12
DATE()

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

13 DATEDIFF()2つの日付を引く
14 DAY()DAYOFMONTH()の同義語
15 DAYNAME()平日の名前を返します。
16 DAYOFMONTH()月の日を返します(1-31)。
17 WEEK()引数の平日インデックスを返します。
18 DAYOFYEAR()曜日(1〜366)を返します。
19 エキス日付の一部を抽出する
20 FROM_DAYS()日番号を日付に変換します。
21 FROM_UNIXTIME()日付をUNIXのタイムスタンプとしてフォーマットする
22 HOUR()時間を抽出する
23 LAST_DAY引数の月の最終日を返します。
24 LOCALTIME()、LOCALTIMENOW()の同義語
25 LOCALTIMESTAMP、LOCALTIMESTAMP()NOW()の同義語
26 MAKEDATE()年と年の日から日付を作成します。
27
MAKETIME

時間を作ります()

28 MICROSECOND()引数からマイクロ秒を返します。
29 MINITE()引数からの分を返します。
30 MONTH()渡された日付から月を返します。
31 MONTHNAME()月の名前を返します。
32 NOW()現在の日付と時刻を返します。
33 PERIOD_ADD()期間を年 – 月に追加します。
34 PERIOD_DIFF()ピリオド間の月数を返します。
35 QUAOTER()日付引数から四半期を返します。
36 SEC_TO_TIME()秒を ‘HH:MM:SS’形式に変換します。
37 SECOND()秒 (0-59)
38 STR_TO_DATE()文字列を日付に変換します。
39 SUBDATE()DATE_SUB()の同義語である3つの引数を指定して呼び出すと、
40 SUBTITLE
時間を引く
41 SYSDATE()関数が実行される時刻を返します。
42 TIME_FORMAT()時刻としてフォーマットする
43 TIME_TO_SEC()秒に変換された引数を返します。
44 HOUR()
渡された式の時間部分を抽出します。
45 TIMEDIFF()時間を引く
46 TIMESTAMP()引数が1つの場合、この関数は日付または日時の式を返します。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 WEEK()週番号を返します。
55 WEEKDAY()曜日のインデックスを返します。
56 WEEKOFYEAR()日付のカレンダーの週を返します(1-53)。
57 YEAR()年を返します。
58 YEARWEEK()年と週を返します。

ADDDATE(日付、INTERVAL expr unit)、ADDDATE(expr、days)

第2引数のINTERVAL形式で呼び出される、ADDDATE()はDATE_ADD()の同義語です。関連する関数SUBDATE()は、DATE_SUB()の同義語です。INTERVAL unitの引数については、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(日付、INTERVAL expr単位)、DATE_SUB(日付、INTERVAL expr単位)

これらの関数は、日付演算を実行します。日付は開始日を指定するDATETIMEまたはDATE値です。exprは開始日から加算または減算する間隔値を指定する式です。exprは文字列です。それは負の間隔のために ‘ – ‘で始まるかもしれません。

ユニットは、式が解釈されるべき単位を示すキーワードです。

INTERVALのキーワードとユニット指定子は、大文字と小文字を区別しません。

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

unit Value Expected exprFormat
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’
MINUTE_MICROSECOND ‘MINUTES.MICROSECONDS’
MINUTE_SECOND ‘MINUTES:SECONDS’
HOUR_MICROSECOND ‘HOURS.MICROSECONDS’
HOUR_SECOND ‘HOURS:MINUTES:SECONDS’
HOUR_MINUTE ‘HOURS:MINUTES’
DAY_MICROSECOND ‘DAYS.MICROSECONDS’
DAY_SECOND ‘DAYS HOURS:MINUTES:SECONDS’
DAY_MINUTE ‘DAYS HOURS:MINUTES’
DAY_HOUR ‘DAYS HOURS’
YEAR_MONTH ‘YEARS-MONTHS’

QUARTERWEEKの値は、MySQL 5.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

短縮された曜日名(Sun..Sat)

2 %b

短縮月名(Jan..Dec)

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 %私

時間(01.12)

11 %私

分(数値)(00..59)

12 %j

日(001..366)

13 %k

時間(0..23)

14 %l

時(1..12)

15 %M

月の名前(1月〜12月)

16 %m

月、数値(00..12)

17 %p

AMまたはPM

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 %バツ

日曜日が週の最初の曜日である週、数字、4桁。%Vとともに使用

29 %バツ

月曜日は週の最初の日、数字は4桁です。%vで使用されます

30 %Y

年、数字、4桁

31 %y

年、数字(2桁)

32 %%

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

33 %バツ

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(日付、区間expr単位)

これは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)

 – 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(date)

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

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

SECOND(time)

時間の秒を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(文字列、形式)

これは、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(日付、INTERVAL expr unit)およびSUBDATE(expr、days)

2番目の引数のINTERVAL形式で呼び出された場合、SUBDATE()はDATE_SUB()の同義語です。INTERVAL unitの引数については、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)

サブタイトル(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)

引数が1つの場合、この関数は日付または日時の式exprを日時の値として返します。2つの引数を指定すると、日付式または日時式expr1に時刻式expr2が追加され、その結果がdatetime値として返されます。

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

TIMESTAMPADD(ユニット、間隔、datetime_expr)

この関数は、日付または日時式datetime_exprに整数の式の間隔を追加します。intervalの単位は、unit引数で与えられます。unit引数は、次のいずれかの値でなければなりません。

  • FRAC_SECOND
  • 秒、分
  • HOUR、DAY
  • 週間
  • QUARTERまたは

単位値は、表示されているキーワードの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(ユニット、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(時刻、形式)

この関数は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(時間)

時間引数を秒に変換して返します。

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年1月1日00:00:00 ‘UTC以降)を符号なし整数として返します。UNIX_TIMESTAMP()がdate引数を指定して呼び出された場合、引数の値は ‘1970-01-01 00:00:00’ UTCから秒単位で戻されます。dateには、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-DD HH: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(日付[、モード])

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

モード 週の最初の日 範囲 第1週が第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)

WEEKDAY(日付)

日付の曜日インデックスを返します(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(日付、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)

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




前のページ⑫LIKE演算子

次のページ⑭テンポラリテーブル

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:2017-09-19 更新日:

執筆者: