ホームページ データベース mysql チュートリアル MYSQL 日付関数の完全なコレクション

MYSQL 日付関数の完全なコレクション

Nov 12, 2016 am 09:51 AM

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

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

mysql> SELECT something FROM table 
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
ログイン後にコピー


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

mysql> select DAYOFWEEK(&#39;1998-02-03&#39;);  
-> 3
ログイン後にコピー


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

mysql> select WEEKDAY(&#39;1997-10-04 22:23:00&#39;);  
-> 5  
mysql> select WEEKDAY(&#39;1997-11-05&#39;);  
-> 2
ログイン後にコピー


DAYOFMONTH(date)
date の月の日を 1 から 31 の範囲で返します。

mysql> select DAYOFMONTH(&#39;1998-02-03&#39;);  
-> 3
ログイン後にコピー


DAYOFYEAR(日付)
年間通算日を 1 ~ 366 の範囲で返します。

mysql> select DAYOFYEAR(&#39;1998-02-03&#39;);  
-> 34
ログイン後にコピー


MONTH(date)
日付の月を 1 から 12 の範囲で返します。

mysql> select MONTH(&#39;1998-02-03&#39;);  
-> 2
ログイン後にコピー


DAYNAME(date)
日付の曜日名を返します。

mysql> select DAYNAME("1998-02-05");  
-> &#39;Thursday&#39;
ログイン後にコピー


MONTHNAME(date)
日付の月名を返します。

mysql> select MONTHNAME("1998-02-05");  
-> &#39;February&#39;
ログイン後にコピー


QUARTER(date)
1 年の四半期を 1 から 4 の範囲で返します。

mysql> select QUARTER(&#39;98-04-01&#39;);  
-> 2
ログイン後にコピー


WEEK(date)

WEEK(date,first)
日曜日が週の最初の日である場所の場合、日付の週番号を 0 ~ 52 の範囲で返す単一のパラメーターがあります。 2パラメーター形式 WEEK() を使用すると、週が日曜日または月曜日のどちらで始まるかを指定できます。 2 番目の引数が 0 の場合、週は日曜日から始まり、2 番目の引数が 1 の場合、
は月曜日から始まります。

mysql> select WEEK(&#39;1998-02-20&#39;);  
-> 7  
mysql> select WEEK(&#39;1998-02-20&#39;,0);  
-> 7  
mysql> select WEEK(&#39;1998-02-20&#39;,1);  
-> 8
ログイン後にコピー

YEAR(date)
date の年を 1000 から 9999 の範囲で返します。

mysql> select YEAR(&#39;98-02-03&#39;);  
-> 1998
ログイン後にコピー


HOUR(時間)
0 から 23 の範囲の時間を返します。

mysql> select HOUR(&#39;10:05:03&#39;);  
-> 10
ログイン後にコピー

MINUTE(time)

時間の分を 0 ~ 59 の範囲で返します。

mysql> select MINUTE(&#39;98-02-03 10:05:03&#39;);  
-> 5
ログイン後にコピー

SECOND(time)
時間の秒数を 0 ~ 59 の範囲で返します。

mysql> select SECOND(&#39;10:05:03&#39;);  
-> 3
ログイン後にコピー

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

mysql> select PERIOD_ADD(9801,2);  
-> 199803
ログイン後にコピー

PERIOD_DIFF(P1,P2)
期間 P1 と P2 の間の月数を返します。P1 と P2 は YYMM または YYYYMM の形式である必要があります。期間パラメータ P1 および P2 は日付値ではないことに注意してください。

mysql> select PERIOD_DIFF(9802,199703);  
-> 11
ログイン後にコピー
 
DATE_ADD(date,INTERVAL expr type)  
   
DATE_SUB(date,INTERVAL expr type)  
   
ADDDATE(date,INTERVAL expr type)  
   
SUBDATE(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 引数が DATE 値で、計算に YEAR、MONTH、DAY コンポーネントのみが含まれる (つまり、時間コンポーネントが含まれない) 場合、結果は DATE 値になります。それ以外の場合、結果は DATETIME 値になります。


mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;  
-> 1998-01-01 00:00:00  
mysql> SELECT INTERVAL 1 DAY + "1997-12-31";  
-> 1998-01-01  
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;  
-> 1997-12-31 23:59:59  
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",  
INTERVAL 1 SECOND);  
-> 1998-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  
mysql> 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> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");  
-> 199907  
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");  
-> 20102
ログイン後にコピー

短すぎる間隔値を指定した場合 (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(&#39;1998-01-30&#39;, Interval 1 month);  
-> 1998-02-28
ログイン後にコピー


注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。
TO_DAYS(date)
给出一个日期date,返回一个天数(从0年的天数)。

mysql> select TO_DAYS(950501);  
-> 728779
ログイン後にコピー
mysql> select TO_DAYS(&#39;1997-10-07&#39;);  
-> 729669
ログイン後にコピー


TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

FROM_DAYS(N)
给出一个天数N,返回一个DATE值。

mysql> select FROM_DAYS(729669);  
-> &#39;1997-10-07&#39;
ログイン後にコピー


TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%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=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

所有的其他字符不做解释被复制到结果中。

mysql> select DATE_FORMAT(&#39;1997-10-04 22:23:00&#39;, &#39;%W %M %Y&#39;);  
-> &#39;Saturday October 1997&#39; 
mysql> select DATE_FORMAT(&#39;1997-10-04 22:23:00&#39;, &#39;%H:%i:%s&#39;);  
-> &#39;22:23:00&#39; 
mysql> select DATE_FORMAT(&#39;1997-10-04 22:23:00&#39;,  
&#39;%D %y %a %d %m %b %j&#39;);  
-> &#39;4th 97 Sat 04 10 Oct 277&#39; 
mysql> select DATE_FORMAT(&#39;1997-10-04 22:23:00&#39;,  
&#39;%H %k %I %r %T %S %w&#39;);  
-> &#39;22 22 10 10:23:00 PM 22:23:00 00 6&#39;
ログイン後にコピー

MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

TIME_FORMAT(time,format)
这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。
其他修饰符产生一个NULL值或0。
CURDATE()
 
CURRENT_DATE
以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。

mysql> select CURDATE();  
-> &#39;1997-12-15&#39; 
mysql> select CURDATE() + 0;  
-> 19971215
ログイン後にコピー


CURTIME()
 
CURRENT_TIME
以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。

mysql> select CURTIME();  
-> &#39;23:50:26&#39; 
mysql> select CURTIME() + 0;  
-> 235026
ログイン後にコピー


NOW()
 
SYSDATE()
 
CURRENT_TIMESTAMP
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的
上下文被使用。

mysql> select NOW();  
-> &#39;1997-12-15 23:50:26&#39; 
mysql> select NOW() + 0;  
-> 19971215235026
ログイン後にコピー


UNIX_TIMESTAMP()
 
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一
个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME
字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。

mysql> select UNIX_TIMESTAMP();  
-> 882226357  
mysql> select UNIX_TIMESTAMP(&#39;1997-10-04 22:23:00&#39;);  
-> 875996580
ログイン後にコピー


当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串
还是或数字上下文中被使用。

mysql> select FROM_UNIXTIME(875996580);  
-> &#39;1997-10-04 22:23:00&#39; 
mysql> select FROM_UNIXTIME(875996580) + 0;  
-> 19971004222300
ログイン後にコピー


FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条
目同样的修饰符。

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),  
&#39;%Y %D %M %h:%i:%s %x&#39;);  
-> &#39;1997 23rd December 03:43:30 x&#39;
ログイン後にコピー


SEC_TO_TIME(seconds)
返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字
上下文中被使用。

mysql> select SEC_TO_TIME(2378);  
-> &#39;00:39:38&#39; 
mysql> select SEC_TO_TIME(2378) + 0;  
-> 3938
ログイン後にコピー


TIME_TO_SEC(time)
返回time参数,转换成秒。

mysql> select TIME_TO_SEC(&#39;22:23:00&#39;);  
-> 80580  
mysql> select TIME_TO_SEC(&#39;00:39:38&#39;);  
-> 2378
ログイン後にコピー


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

MySQLの大きなデータセットをどのように処理しますか? MySQLの大きなデータセットをどのように処理しますか? Mar 21, 2025 pm 12:15 PM

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

INNODBフルテキスト検索機能を説明します。 INNODBフルテキスト検索機能を説明します。 Apr 02, 2025 pm 06:09 PM

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? Mar 19, 2025 pm 03:52 PM

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

外国の鍵を使用して関係をどのように表現しますか? 外国の鍵を使用して関係をどのように表現しますか? Mar 19, 2025 pm 03:48 PM

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

JSON列にインデックスを作成するにはどうすればよいですか? JSON列にインデックスを作成するにはどうすればよいですか? Mar 21, 2025 pm 12:13 PM

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

See all articles