ホームページ  >  記事  >  データベース  >  MYSQL 日付関数の概要

MYSQL 日付関数の概要

小云云
小云云オリジナル
2017-12-04 11:24:351598ブラウズ

日付と時刻関数は、数式内の日付値と時刻値を分析および処理するために使用される関数を指します。この記事では、MYSQL の日付関数の概要を共有します。

各型の値の範囲と日付と時刻の値を指定するための有効な形式の説明については、「7.3.6 日付と時刻の型」を参照してください。

これは日付関数を使用した例です。次のクエリは、date_col 値が過去 30 日以内のすべてのレコードを選択します:

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col)
DAYOFWEEK(date )
Returns日付の曜日インデックス (1=日曜日、2=月曜日、...7=土曜日)。これらのインデックス値は ODBC 標準に対応しています。
mysql> select DAYOFWEEK('1998-02-03');
-> 3

WEEKDAY(date)
日付の週のインデックスを返します (0=月曜日、1=火曜日、...6=日曜日)。
mysql>select WEEKDAY('1997-10-04 22:23:00');
mysql>select WEEKDAY('1997-11-05'); )
date の月の日を 1 から 31 の範囲で返します。
mysql> select DAYOFMONTH('1998-02-03');
-> 3

DAYOFYEAR(date)
date の年の日数を 1 から 366 の範囲で返します。
mysql> select DAYOFYEAR('1998-02-03');
-> 34

MONTH(date)
1 から 12 までの日付の月を返します。
mysql> select MONTH('1998-02-03');

DAYNAME(date)
日付の曜日名を返します。
mysql> select DAYNAME("1998-02-05");
-> '木曜日'

MONTHNAME(date)
日付の月名を返します。
mysql> select MONTHNAME("1998-02-05");
-> 'April'

QUARTER(date)
1 から 4 の範囲の日付を返します。
mysql> select QUARTER('98-04-01');
-> 2

WEEK(date)

WEEK(date,first)
日曜日が週の最初の日である場所には、単一パラメータは、日付の週番号を 0 ~ 52 の範囲で返します。 2 引数形式 WEEK() を使用すると、週が日曜日から始まるか月曜日から始まるかを指定できます。 2 番目の引数が 0 の場合、週は日曜日から始まり、2 番目の引数が 1 の場合、
は月曜日から始まります。
mysql>select WEEK('1998-02-20');
->select WEEK('1998) -02-20',1);
-> 8

YEAR(date)
1000 から 9999 の範囲の日付の年を返します。
mysql> select YEAR('98-02-03');
-> 1998

HOUR(time)
時間を 0 から 23 まで返します。
mysql> select HOUR('10:05:03');
-> 10

MINUTE(time)
0 から 59 までの分を返します。
mysql> select MINUTE('98-02-03 10:05:03');
-> 5

SECOND(time)
0 から 59 までの秒数を返します。
mysql> select SECOND('10:05:03');
-> 3

PERIOD_ADD(P,N)
フェーズ P に N か月を追加します (YYMM または YYYYMM の形式)。 YYYYMM 形式で値を返します。位相パラメータ P は日付値ではないことに注意してください。
mysql> select PERIOD_ADD(9801,2);
-> 199803

PERIOD_DIFF(P1,P2)
期間 P1 と P2 の間の月数を YYMM または YYYYMM の形式で返します。期間パラメータ P1 および P2 は日付値ではないことに注意してください。
mysql> select PERIOD_DIFF(9802,199703);
->

DATE_ADD(date,INTERVAL expr type)

ADDDATE(date,INTERVAL expr type) )

サブデート( date,INTERVAL expr type)
これらの関数は日付操作を実行します。 MySQL 3.22 の時点では、これらは新しいものです。 ADDDATE() と SUBDATE() は、DATE_ADD() と DATE_SUB() の同義語です。
MySQL 3.23 では、DATE_ADD() と DATE_SUB() の代わりに + と - を使用できます。 (例を参照) date は開始日を指定する
DATETIME または DATE 値、expr は開始日から加算または減算される間隔値を指定する式、expr は
で終わる文字列です。 - 」は負の間隔を示し始めます。 type は、式をどのように解釈するかを指定するキーワードです。 EXTRACT(type FROM date) 関数は、日付
から「type」間隔を返します。次の表は、type パラメータと expr パラメータの関係を示しています。 type 値 意味 期待される expr 形式
SECOND 秒 SECONDS
MINUTE 分 MINUTES
HOUR time HOURS
DAY days
MONTH months MONTHS
YEAR year YEARS
MINUTE_SECOND 分と秒 "MINUTES " :SECONDS"
HOUR_MINUTE 時と分 "HOURS:MINUTES"
DAY_HOUR 日と時間 "DAYS HOURS"
YEAR_MONTH 年と月 "YEARS-MONTHS"
HOUR_SECOND 時、分、 "HOURS:MINUTES:SECONDS"
DAY_MINUTE 日、時、分 "DAYS HOURS:MINUTES"
DAY_SECOND 日、時、分、秒 "DAYS HOURS:MINUTES:SECONDS"

MySQL では、expr 形式の句読点区切り文字を使用できます。推奨される区切り文字が表示されることを示します。日付パラメータが DATE 値で、計算が単に
の場合YEAR、MONTH、DAY コンポーネントが含まれ (つまり、時間コンポーネントは含まれません)、結果は DATE 値になります。それ以外の場合、結果は DATETIME 値になります。

mysql> SELECT "1997-12-31 23:59:59" + 間隔 1 日 + "1998-01-01
mysql>"; - 間隔 1 秒; 1997-12-31 23:59:59
MYSQL> 01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL 1 DAY)
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL "1:1" MINUTE_SECOND);
->1998-01-01 00:01:00
SELECT DATE_SUB("1998-01 -01 00:00:00",
INTERVAL "1 1:1:1" DAY_SECOND);
->1997- 12-30 22:58:59
mysql>SELECT DATE_ADD("1998-01-01 00: 00:00",
INTERVAL "-1 10" DAY_HOUR);
->1997-12-30 14:00:00
mysql>SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
- > 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02")
-> 1999
MYSQL> ;
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 指定した間隔が短すぎる場合type キーワードによって予期される)、MySQL は間隔値の左端の部分が省略されたと想定します。たとえば、
DAY_SECOND のタイプを指定した場合、値 expr には日、時、分、秒のコンポーネントが含まれることが期待されます。 「1:10」のような値を指定すると、
MySQL は日と時間の部分が欠落しており、値が分と秒を表すものとみなします。言い換えれば、「1:10」DAY_SECOND は「1:10」MINUTE_SECOND
と同等であるように解釈されます。これは、MySQL が TIME 値を時間ではなく経過時間を表すように解釈する方法にとって曖昧です。日。本当に間違った日付を使用した場合、
結果は NULL になります。 MONTH、YEAR_MONTH、または YEAR を増分し、結果の日付が新しい月の最大日数を超える場合、日数は新しい月の最大日数に調整されます。

mysql> select DATE_ADD('1998-01-30', Interval 1 month);
-> 1998-02-28

前の例では、単語 INTERVAL と type キーワードは大文字と小文字を区別しないことに注意してください。 。
TO_DAYS(日付)
日付を指定して、日数 (0 年からの日数) を返します。
mysql> select TO_DAYS(950501);
-> 728779
-> 729669

TO_DAYS() は Greg で使用することを目的としていません。オリアン暦 (1582 年) ) が値の前に表示されます。

FROM_DAYS(N)
日数 N を指定すると、DATE 値を返します。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'

TO_DAYS() は、グレゴリオ暦 (1582 年) の出現以前の値で使用することを意図していません。

DATE_FORMAT(date,format)
フォーマット文字列に従って日付値をフォーマットします。フォーマット文字列では次の修飾子を使用できます: %M 月名 (1 月...12 月)
%W 週名 (日曜日...土曜日)
%D 英語の接頭辞が付いた月の日 (1 日、2 日、3 日) 、など)
%Y 年、数字、4 桁
%y 年、数字、2 桁
%a 週の短縮名 (Sun...Sat)
%d 月の日数、数字 (00 ...31)
%e 月の日数、数値 (0...31)
%m 月、数値 (01...12)
%c 月、数値 (1...12)
%b 月の省略名 (1 月...12 月)
%j 年間の日数 (001…366)
%H 時間 (00…23)
%k 時間 (0…23)
%h 時間 (01) …12)
%I 時間 (01...12)
%l 時間 (1...12)
%i 分、数字 (00...59)
%r 時間、12 時間 (hh:mm: ss [AP]M)
%T 時間、24 時間 (hh:mm:ss)
%S 秒 (00……59)
%s 秒 (00……59)
%p AM または PM
%w週の日数 (0=日曜日… 6=土曜日)
%U 週(0……52)、ここでは日曜日が週の最初の日です
%u 週(0……52)、ここでは月曜日がその日です週の最初の日
%% テキスト「%」。

他のすべての文字は解釈されずに結果にコピーされます。

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); '1997 年 10 月土曜日'
mysql> 04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j'); '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00') ,
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
MySQL3.23 では、 format % は修飾文字の前に必要です。 MySQL の以前のバージョンでは、% はオプションでした。

TIME_FORMAT(time,format)
これは上記の DATE_FORMAT() 関数と同様に使用されますが、フォーマット文字列には、時、分、秒を処理するフォーマット修飾子のみを含めることができます。
他の修飾子は NULL 値または 0 を生成します。
CURDATE()

CURRENT_DATE
関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、今日の日付値を「YYYY-MM-DD」または YYYYMMDD 形式で返します。
mysql>select CURDATE(); '1997-12-15'

CURTIME()
CURRENT_TIME
「HH:MM:SS」関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、現在の時刻値を返すには HHMMSS 形式が使用されます。
mysql> select CURTIME(); '23:50:26'

NOW()

CU RRENT_TIMESTAMP
と' 関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、現在の日付と時刻を YYYY-MM-DD HH:MM:SS' または YYYYMMDDHHMMSS 形式で返します。
mysql> select NOW(); '1997-12-15 23:50:26'

UNIX_TIMESTAMP;

UNIX_TIMESTAMP(日付)
引数なしで呼び出された場合は、Unix タイムスタンプ (「1970-01-01 00:00:00」GMT からの秒数) を返します。 UNIX_TIMESTAMP() が日付引数を指定して呼び出された場合、「1970-01-01 00:00:00」GMT からの秒数が返されます。 date には、DATE 文字列、DATETIME 文字列、TIMESTAMP、または YYMMDD または YYYYMMDD 形式の現地時間の数値を指定できます。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> TIMESTAMP 列で関数の値が使用され、暗黙的な「文字列から Unix タイムスタンプ」への変換が行われません。

FROM_UNIXTIME(unix_timestamp)
関数が文字列
で使用されるか数値コンテキストで使用されるかに応じて、unix_timestamp パラメーターで表される値を 'YYYY-MM-DD HH:MM:SS' または YYYYMMDDHHMMSS 形式で返します。
mysql>select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
->19971004 222300

FROM_UNIXTIME(unix_timestamp,format)
フォーマット文字列に従ってフォーマットされた Unix タイムスタンプを表す文字列を返します。 format には、DATE_FORMAT() 関数にリストされているのと同じ修飾子を含めることができます。
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');

SEC_TO_TIME(秒)
関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、値は「HH:MM:SS」または HHMMSS でフォ​​ーマットされ、秒パラメーターを返します。 &Mysql & GT; 性別を選択 (2378);
- & gt; '00: 39: 38 '
性別を選択 (2378) + 0; 回 時間パラメータを返します。
mysql> select TIME_TO_SEC('22:23:00');
->select TIME_TO_SEC('00:39:38');


SQLの日付関数の概要。皆さんのお役に立てば幸いです。

関連する推奨事項:


日付関数と関数カプセル化の柔軟な使用



一般的に使用される mysql 日付関数



MYSQL 日付関数コレクション

以上がMYSQL 日付関数の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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