<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=MySQL_-_%E6%97%A5%E4%BB%98%E3%83%BB%E6%99%82%E5%88%BB%E9%96%A2%E6%95%B0</id>
	<title>MySQL - 日付・時刻関数 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=MySQL_-_%E6%97%A5%E4%BB%98%E3%83%BB%E6%99%82%E5%88%BB%E9%96%A2%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=MySQL_-_%E6%97%A5%E4%BB%98%E3%83%BB%E6%99%82%E5%88%BB%E9%96%A2%E6%95%B0&amp;action=history"/>
	<updated>2026-09-03T03:10:17Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://mochiuwiki.e2.valueserver.jp/index.php?title=MySQL_-_%E6%97%A5%E4%BB%98%E3%83%BB%E6%99%82%E5%88%BB%E9%96%A2%E6%95%B0&amp;diff=14297&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == MySQLは、日付と時刻を扱うための豊富な関数セットを提供している。&lt;br&gt; 日付・時刻データ型には、DATE、TIME、DATETIME、TIMESTAMP、YEARの5つが存在する。&lt;br&gt; &lt;br&gt; 日付・時刻関数は、以下に示す用途で使用される。&lt;br&gt; &lt;br&gt; &lt;center&gt; {| class=&quot;wikitable&quot; |+ 日付・時刻関数の用途 |- ! 用途 !! 主な関数 |- | 現在日時の取得 || NOW、CURDATE、CURTIME等 |- | 日付のフォ…」</title>
		<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=MySQL_-_%E6%97%A5%E4%BB%98%E3%83%BB%E6%99%82%E5%88%BB%E9%96%A2%E6%95%B0&amp;diff=14297&amp;oldid=prev"/>
		<updated>2026-02-15T10:52:52Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == MySQLは、日付と時刻を扱うための豊富な関数セットを提供している。&amp;lt;br&amp;gt; 日付・時刻データ型には、DATE、TIME、DATETIME、TIMESTAMP、YEARの5つが存在する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 日付・時刻関数は、以下に示す用途で使用される。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; {| class=&amp;quot;wikitable&amp;quot; |+ 日付・時刻関数の用途 |- ! 用途 !! 主な関数 |- | 現在日時の取得 || NOW、CURDATE、CURTIME等 |- | 日付のフォ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
MySQLは、日付と時刻を扱うための豊富な関数セットを提供している。&amp;lt;br&amp;gt;&lt;br /&gt;
日付・時刻データ型には、DATE、TIME、DATETIME、TIMESTAMP、YEARの5つが存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日付・時刻関数は、以下に示す用途で使用される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 日付・時刻関数の用途&lt;br /&gt;
|-&lt;br /&gt;
! 用途 !! 主な関数&lt;br /&gt;
|-&lt;br /&gt;
| 現在日時の取得 || NOW、CURDATE、CURTIME等&lt;br /&gt;
|-&lt;br /&gt;
| 日付のフォーマット変換 || DATE_FORMAT、STR_TO_DATE等&lt;br /&gt;
|-&lt;br /&gt;
| 日付の加算・減算 || DATE_ADD、DATE_SUB、INTERVAL演算子等&lt;br /&gt;
|-&lt;br /&gt;
| 日付の差分計算 || DATEDIFF、TIMESTAMPDIFF等&lt;br /&gt;
|-&lt;br /&gt;
| 日付の部分取得 || YEAR、MONTH、DAY、EXTRACT等&lt;br /&gt;
|-&lt;br /&gt;
| タイムゾーン変換 || CONVERT_TZ等&lt;br /&gt;
|-&lt;br /&gt;
| UNIXタイムスタンプ変換 || UNIX_TIMESTAMP、FROM_UNIXTIME等&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これらの関数を効果的に使用することで、複雑な日付計算、レポート生成、データ分析を実現できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日付・時刻型は、フォーマット、範囲、サイズ、タイムゾーン対応の点で異なる特性を持つ。&amp;lt;br&amp;gt;&lt;br /&gt;
TIMESTAMP型は、タイムゾーン対応と自動初期化機能を持つ点で、DATETIME型と異なる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MySQL 5.6.4以降では、DATETIME、TIMESTAMP、TIME型において、小数秒精度 (fsp : fractional seconds precision) がサポートされている。&amp;lt;br&amp;gt;&lt;br /&gt;
小数秒精度は、0 (秒単位) から6 (マイクロ秒単位) まで指定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;日付・時刻関数を使用する時は、インデックスの有効性、NULL値の扱い、タイムゾーン設定に注意する必要がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;特に、&amp;lt;code&amp;gt;WHERE&amp;lt;/code&amp;gt; 句で日付カラムに関数を適用すると、インデックスが無効化されるため、範囲検索に変換することが推奨される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== データ型 ==&lt;br /&gt;
==== データ型の比較 ====&lt;br /&gt;
MySQLの日付・時刻データ型を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ MySQL 日付・時刻データ型の比較&lt;br /&gt;
! データ型 !! 範囲 !! フォーマット !! サイズ !! fsp対応 !! タイムゾーン対応&lt;br /&gt;
|-&lt;br /&gt;
| DATE || &amp;#039;1000-01-01&amp;#039; ～ &amp;#039;9999-12-31&amp;#039; || YYYY-MM-DD || 3バイト || 非対応 || 非対応&lt;br /&gt;
|-&lt;br /&gt;
| TIME || &amp;#039;-838:59:59&amp;#039; ～ &amp;#039;838:59:59&amp;#039; || HH:MM:SS || 3バイト || 対応 (0-6) || 非対応&lt;br /&gt;
|-&lt;br /&gt;
| DATETIME || &amp;#039;1000-01-01 00:00:00&amp;#039; ～ &amp;#039;9999-12-31 23:59:59&amp;#039; || YYYY-MM-DD HH:MM:SS || 8バイト || 対応 (0-6) || 非対応&lt;br /&gt;
|-&lt;br /&gt;
| TIMESTAMP || &amp;#039;1970-01-01 00:00:01&amp;#039; UTC ～ &amp;#039;2038-01-19 03:14:07&amp;#039; UTC || YYYY-MM-DD HH:MM:SS || 4バイト || 対応 (0-6) || 対応 (UTC変換)&lt;br /&gt;
|-&lt;br /&gt;
| YEAR || 1901 ～ 2155、0000 || YYYY || 1バイト || 非対応 || 非対応&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DATE型は、日付のみを格納し、時刻部分を持たない。&amp;lt;br&amp;gt;&lt;br /&gt;
TIME型は、時刻または経過時間を格納し、負の値をサポートしている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DATETIME型は、タイムゾーン非対応であり、格納時の値がそのまま保持される。&amp;lt;br&amp;gt;&lt;br /&gt;
TIMESTAMP型は、格納時にUTCに変換され、取得時にセッション時刻に変換される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
TIMESTAMP型の範囲は、UNIXタイムスタンプの制約により、2038年問題の影響を受ける。&amp;lt;br&amp;gt;&lt;br /&gt;
2038年以降の日付を扱う場合は、DATETIME型の使用を推奨する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
YEAR型は、年のみを格納する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;YEAR(2)型 (2桁年) は、MySQL 8.0で廃止された。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 小数秒精度 (fsp) ====&lt;br /&gt;
MySQL 5.6.4以降では、DATETIME、TIMESTAMP、TIME型において、小数秒精度 (fsp) がサポートされている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
小数秒精度の指定値と精度の対応を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 小数秒精度 (fsp) の指定&lt;br /&gt;
! fsp値 !! 精度 !! 例&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 秒単位 (デフォルト) || 2024-01-15 12:30:45&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0.1秒単位 || 2024-01-15 12:30:45.1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0.01秒単位 (センチ秒) || 2024-01-15 12:30:45.12&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0.001秒単位 (ミリ秒) || 2024-01-15 12:30:45.123&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0.0001秒単位 || 2024-01-15 12:30:45.1234&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0.00001秒単位 || 2024-01-15 12:30:45.12345&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0.000001秒単位 (マイクロ秒) || 2024-01-15 12:30:45.123456&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
カラム定義での小数秒精度の指定例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 CREATE TABLE events (&lt;br /&gt;
    event_id INT PRIMARY KEY,&lt;br /&gt;
    event_datetime DATETIME(3),   -- ミリ秒精度&lt;br /&gt;
    event_timestamp TIMESTAMP(6), -- マイクロ秒精度&lt;br /&gt;
    event_time TIME(3)             -- ミリ秒精度&lt;br /&gt;
 );&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
小数秒精度を指定すると、ストレージサイズが増加する。&amp;lt;br&amp;gt;&lt;br /&gt;
fsp 1〜2は1バイト、fsp 3〜4は2バイト、fsp 5〜6は3バイトの追加ストレージが必要となる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 現在日時の取得 ==&lt;br /&gt;
現在の日付・時刻を取得する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 現在日時取得関数&lt;br /&gt;
! 関数 !! 戻り値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| NOW() / CURRENT_TIMESTAMP / CURRENT_TIMESTAMP() || DATETIME || クエリ実行開始時点の固定値を返す&lt;br /&gt;
|-&lt;br /&gt;
| SYSDATE() || DATETIME || 関数実行時点の現在日時を返す (NOW()と異なる)&lt;br /&gt;
|-&lt;br /&gt;
| CURDATE() / CURRENT_DATE / CURRENT_DATE() || DATE || 現在の日付を返す&lt;br /&gt;
|-&lt;br /&gt;
| CURTIME() / CURRENT_TIME / CURRENT_TIME() || TIME || 現在の時刻を返す&lt;br /&gt;
|-&lt;br /&gt;
| UTC_DATE() || DATE || 現在のUTC日付を返す&lt;br /&gt;
|-&lt;br /&gt;
| UTC_TIME() || TIME || 現在のUTC時刻を返す&lt;br /&gt;
|-&lt;br /&gt;
| UTC_TIMESTAMP() || DATETIME || 現在のUTCタイムスタンプを返す&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; 関数は、クエリ実行開始時点の日時を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
同一クエリ内で複数回呼び出しても、同じ値を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;SYSDATE()&amp;lt;/code&amp;gt; 関数は、関数実行時点の日時を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
同一クエリ内で複数回呼び出すと、異なる値を返す可能性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; と &amp;lt;code&amp;gt;SYSDATE()&amp;lt;/code&amp;gt; の違いを示す例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT NOW(), SLEEP(2), NOW();          -- 同じ値を返す&lt;br /&gt;
 SELECT SYSDATE(), SLEEP(2), SYSDATE();  -- 2秒の差がある&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
UTC系関数は、サーバーのタイムゾーン設定に依存せず、常にUTC時刻を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
国際的なアプリケーションでは、UTC系関数の使用を推奨する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
小数秒精度を指定する場合は、引数でfsp値を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT NOW(3);      -- ミリ秒精度の現在日時&lt;br /&gt;
 SELECT CURTIME(6);  -- マイクロ秒精度の現在時刻&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付・時刻のフォーマット ==&lt;br /&gt;
==== DATE_FORMAT / TIME_FORMAT ====&lt;br /&gt;
日付・時刻を文字列に変換する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 DATE_FORMAT(date, format)&lt;br /&gt;
 TIME_FORMAT(time, format)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;DATE_FORMAT()&amp;lt;/code&amp;gt; 関数は、日付または日付時刻値を指定フォーマットで文字列に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;TIME_FORMAT()&amp;lt;/code&amp;gt; 関数は、時刻値を指定フォーマットで文字列に変換する。(時刻関連指定子のみ使用可能)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT DATE_FORMAT(NOW(), &amp;#039;%Y-%m-%d %H:%i:%s&amp;#039;);&lt;br /&gt;
 -- 出力例: 2026-02-15 14:30:45&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_FORMAT(&amp;#039;2024-03-15&amp;#039;, &amp;#039;%Y年%m月%d日&amp;#039;);&lt;br /&gt;
 -- 出力例: 2024年03月15日&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_FORMAT(NOW(), &amp;#039;%W, %M %d, %Y&amp;#039;);&lt;br /&gt;
 -- 出力例: Saturday, February 15, 2026&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIME_FORMAT(&amp;#039;14:30:45&amp;#039;, &amp;#039;%H時%i分%s秒&amp;#039;);&lt;br /&gt;
 -- 出力例: 14時30分45秒&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== フォーマット指定子一覧 ====&lt;br /&gt;
主要なフォーマット指定子を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ DATE_FORMAT フォーマット指定子&lt;br /&gt;
! 指定子 !! 説明 !! 例&lt;br /&gt;
|-&lt;br /&gt;
| %Y || 4桁の年 || 2026&lt;br /&gt;
|-&lt;br /&gt;
| %y || 2桁の年 || 26&lt;br /&gt;
|-&lt;br /&gt;
| %m || 2桁の月 (01-12) || 02&lt;br /&gt;
|-&lt;br /&gt;
| %c || 月 (1-12) || 2&lt;br /&gt;
|-&lt;br /&gt;
| %M || 月名 || February&lt;br /&gt;
|-&lt;br /&gt;
| %b || 月名の略 || Feb&lt;br /&gt;
|-&lt;br /&gt;
| %d || 2桁の日 (01-31) || 15&lt;br /&gt;
|-&lt;br /&gt;
| %e || 日 (1-31) || 15&lt;br /&gt;
|-&lt;br /&gt;
| %D || 英語序数付き日 || 15th&lt;br /&gt;
|-&lt;br /&gt;
| %H || 2桁の時 (00-23) || 14&lt;br /&gt;
|-&lt;br /&gt;
| %h / %I || 2桁の時 (01-12) || 02&lt;br /&gt;
|-&lt;br /&gt;
| %k || 時 (0-23) || 14&lt;br /&gt;
|-&lt;br /&gt;
| %l || 時 (1-12) || 2&lt;br /&gt;
|-&lt;br /&gt;
| %i || 2桁の分 (00-59) || 30&lt;br /&gt;
|-&lt;br /&gt;
| %s / %S || 2桁の秒 (00-59) || 45&lt;br /&gt;
|-&lt;br /&gt;
| %f || マイクロ秒 (6桁) || 123456&lt;br /&gt;
|-&lt;br /&gt;
| %p || AM / PM || PM&lt;br /&gt;
|-&lt;br /&gt;
| %W || 曜日名 || Saturday&lt;br /&gt;
|-&lt;br /&gt;
| %a || 曜日名の略 || Sat&lt;br /&gt;
|-&lt;br /&gt;
| %w || 曜日番号 (0=日曜 - 6=土曜) || 6&lt;br /&gt;
|-&lt;br /&gt;
| %j || 年内の日数 (001-366) || 046&lt;br /&gt;
|-&lt;br /&gt;
| %U || 週番号 (00-53、日曜始まり) || 06&lt;br /&gt;
|-&lt;br /&gt;
| %u || 週番号 (00-53、月曜始まり) || 06&lt;br /&gt;
|-&lt;br /&gt;
| %V || 週番号 (01-53、日曜始まり、%Xと併用) || 07&lt;br /&gt;
|-&lt;br /&gt;
| %v || 週番号 (01-53、月曜始まり、%xと併用) || 07&lt;br /&gt;
|-&lt;br /&gt;
| %X || 4桁の年 (%Vと併用) || 2026&lt;br /&gt;
|-&lt;br /&gt;
| %x || 4桁の年 (%vと併用) || 2026&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
複数の指定子を組み合わせて、任意のフォーマットを作成できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日本語形式の日付フォーマット例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT DATE_FORMAT(NOW(), &amp;#039;%Y年%m月%d日 (%a) %H:%i:%s&amp;#039;);&lt;br /&gt;
 -- 出力例: 2026年02月15日 (Sat) 14:30:45&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付の加算・減算 ==&lt;br /&gt;
==== DATE_ADD / DATE_SUB ====&lt;br /&gt;
日付に指定した間隔を加算・減算する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 DATE_ADD(date, INTERVAL expr unit)&lt;br /&gt;
 DATE_SUB(date, INTERVAL expr unit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ADDDATE()&amp;lt;/code&amp;gt; 関数、&amp;lt;code&amp;gt;SUBDATE()&amp;lt;/code&amp;gt; 関数は、DATE_ADD()、DATE_SUB()の別名である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
演算子形式でも使用できる。&amp;lt;br&amp;gt;&lt;br /&gt;
 date + INTERVAL expr unit&lt;br /&gt;
 date - INTERVAL expr unit&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- 現在日時に3日を加算&lt;br /&gt;
 SELECT DATE_ADD(NOW(), INTERVAL 3 DAY);&lt;br /&gt;
 &lt;br /&gt;
 -- 現在日時から2時間を減算&lt;br /&gt;
 SELECT DATE_SUB(NOW(), INTERVAL 2 HOUR);&lt;br /&gt;
 &lt;br /&gt;
 -- 演算子形式での加算&lt;br /&gt;
 SELECT NOW() + INTERVAL 1 MONTH;&lt;br /&gt;
 &lt;br /&gt;
 -- 演算子形式での減算&lt;br /&gt;
 SELECT NOW() - INTERVAL 7 DAY;&lt;br /&gt;
 &lt;br /&gt;
 -- 複数の間隔を組み合わせ&lt;br /&gt;
 SELECT NOW() + INTERVAL 1 YEAR + INTERVAL 6 MONTH;&lt;br /&gt;
 &lt;br /&gt;
 -- 複合単位の使用&lt;br /&gt;
 SELECT NOW() + INTERVAL &amp;#039;1 6&amp;#039; YEAR_MONTH;  -- 1年6ヶ月を加算&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
月末の自動調整が行われる。&amp;lt;br&amp;gt;&lt;br /&gt;
例として、1月31日に1ヶ月を加算すると、2月28日 (または2月29日) が返される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT DATE_ADD(&amp;#039;2024-01-31&amp;#039;, INTERVAL 1 MONTH);&lt;br /&gt;
 -- 出力: 2024-02-29 (2024年は閏年)&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_ADD(&amp;#039;2025-01-31&amp;#039;, INTERVAL 1 MONTH);&lt;br /&gt;
 -- 出力: 2025-02-28&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== INTERVAL単位一覧 ====&lt;br /&gt;
INTERVAL句で使用できる単位を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ INTERVAL単位&lt;br /&gt;
! 単位 !! 説明 !! expr形式 !! 例&lt;br /&gt;
|-&lt;br /&gt;
| MICROSECOND || マイクロ秒 || 整数 || INTERVAL 500000 MICROSECOND&lt;br /&gt;
|-&lt;br /&gt;
| SECOND || 秒 || 整数 || INTERVAL 30 SECOND&lt;br /&gt;
|-&lt;br /&gt;
| MINUTE || 分 || 整数 || INTERVAL 15 MINUTE&lt;br /&gt;
|-&lt;br /&gt;
| HOUR || 時 || 整数 || INTERVAL 3 HOUR&lt;br /&gt;
|-&lt;br /&gt;
| DAY || 日 || 整数 || INTERVAL 7 DAY&lt;br /&gt;
|-&lt;br /&gt;
| WEEK || 週 || 整数 || INTERVAL 2 WEEK&lt;br /&gt;
|-&lt;br /&gt;
| MONTH || 月 || 整数 || INTERVAL 3 MONTH&lt;br /&gt;
|-&lt;br /&gt;
| QUARTER || 四半期 || 整数 || INTERVAL 1 QUARTER&lt;br /&gt;
|-&lt;br /&gt;
| YEAR || 年 || 整数 || INTERVAL 5 YEAR&lt;br /&gt;
|-&lt;br /&gt;
| SECOND_MICROSECOND || 秒.マイクロ秒 || &amp;#039;ss.mmmmmm&amp;#039; || INTERVAL &amp;#039;30.500000&amp;#039; SECOND_MICROSECOND&lt;br /&gt;
|-&lt;br /&gt;
| MINUTE_MICROSECOND || 分:秒.マイクロ秒 || &amp;#039;mm:ss.mmmmmm&amp;#039; || INTERVAL &amp;#039;15:30.500000&amp;#039; MINUTE_MICROSECOND&lt;br /&gt;
|-&lt;br /&gt;
| MINUTE_SECOND || 分:秒 || &amp;#039;mm:ss&amp;#039; || INTERVAL &amp;#039;15:30&amp;#039; MINUTE_SECOND&lt;br /&gt;
|-&lt;br /&gt;
| HOUR_MICROSECOND || 時:分:秒.マイクロ秒 || &amp;#039;hh:mm:ss.mmmmmm&amp;#039; || INTERVAL &amp;#039;3:15:30.500000&amp;#039; HOUR_MICROSECOND&lt;br /&gt;
|-&lt;br /&gt;
| HOUR_SECOND || 時:分:秒 || &amp;#039;hh:mm:ss&amp;#039; || INTERVAL &amp;#039;3:15:30&amp;#039; HOUR_SECOND&lt;br /&gt;
|-&lt;br /&gt;
| HOUR_MINUTE || 時:分 || &amp;#039;hh:mm&amp;#039; || INTERVAL &amp;#039;3:15&amp;#039; HOUR_MINUTE&lt;br /&gt;
|-&lt;br /&gt;
| DAY_MICROSECOND || 日 時:分:秒.マイクロ秒 || &amp;#039;dd hh:mm:ss.mmmmmm&amp;#039; || INTERVAL &amp;#039;7 3:15:30.500000&amp;#039; DAY_MICROSECOND&lt;br /&gt;
|-&lt;br /&gt;
| DAY_SECOND || 日 時:分:秒 || &amp;#039;dd hh:mm:ss&amp;#039; || INTERVAL &amp;#039;7 3:15:30&amp;#039; DAY_SECOND&lt;br /&gt;
|-&lt;br /&gt;
| DAY_MINUTE || 日 時:分 || &amp;#039;dd hh:mm&amp;#039; || INTERVAL &amp;#039;7 3:15&amp;#039; DAY_MINUTE&lt;br /&gt;
|-&lt;br /&gt;
| DAY_HOUR || 日 時 || &amp;#039;dd hh&amp;#039; || INTERVAL &amp;#039;7 3&amp;#039; DAY_HOUR&lt;br /&gt;
|-&lt;br /&gt;
| YEAR_MONTH || 年-月 || &amp;#039;yy-mm&amp;#039; || INTERVAL &amp;#039;1-6&amp;#039; YEAR_MONTH&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
複合単位を使用することで、複数の時間単位を1度に加算できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ADDTIME / SUBTIME ====&lt;br /&gt;
&amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; 値 または &amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt; 値に時間を加算・減算する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 ADDTIME(expr1, expr2)&lt;br /&gt;
 SUBTIME(expr1, expr2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
第1引数は、&amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; 型 または &amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt; 型の値である。&amp;lt;br&amp;gt;&lt;br /&gt;
第2引数は、加算・減算する時間 (TIME型) である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT ADDTIME(&amp;#039;2024-01-15 12:00:00&amp;#039;, &amp;#039;02:30:00&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-01-15 14:30:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT SUBTIME(&amp;#039;2024-01-15 12:00:00&amp;#039;, &amp;#039;01:15:00&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-01-15 10:45:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT ADDTIME(&amp;#039;10:30:00&amp;#039;, &amp;#039;00:45:00&amp;#039;);&lt;br /&gt;
 -- 出力: 11:15:00&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付の差分計算 ==&lt;br /&gt;
==== DATEDIFF ====&lt;br /&gt;
2つの日付の日数差分を返す関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 DATEDIFF(date1, date2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;戻り値は、&amp;lt;math&amp;gt;\mbox{date1} - \mbox{date2}&amp;lt;/math&amp;gt; の日数差分である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
時刻部分は無視される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT DATEDIFF(&amp;#039;2024-02-15&amp;#039;, &amp;#039;2024-01-15&amp;#039;);&lt;br /&gt;
 -- 出力: 31&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATEDIFF(&amp;#039;2024-01-15&amp;#039;, &amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: -31&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATEDIFF(NOW(), &amp;#039;2024-01-01&amp;#039;);&lt;br /&gt;
 -- 出力: 現在日と2024-01-01の日数差分&lt;br /&gt;
 &lt;br /&gt;
 -- 時刻部分は無視される&lt;br /&gt;
 SELECT DATEDIFF(&amp;#039;2024-02-15 23:59:59&amp;#039;, &amp;#039;2024-02-15 00:00:00&amp;#039;);&lt;br /&gt;
 -- 出力: 0&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== TIMESTAMPDIFF ====&lt;br /&gt;
2つの日付・時刻の差分を指定単位で返す関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 TIMESTAMPDIFF(unit, datetime1, datetime2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;戻り値は、&amp;lt;math&amp;gt;\mbox{datetime2} - \mbox{datetime1}&amp;lt;/math&amp;gt; の差分である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;第1引数は、MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEARのいずれかである。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT TIMESTAMPDIFF(DAY, &amp;#039;2024-01-15&amp;#039;, &amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 31&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMESTAMPDIFF(HOUR, &amp;#039;2024-01-15 10:00:00&amp;#039;, &amp;#039;2024-01-15 14:30:00&amp;#039;);&lt;br /&gt;
 -- 出力: 4&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMESTAMPDIFF(MINUTE, &amp;#039;2024-01-15 10:00:00&amp;#039;, &amp;#039;2024-01-15 14:30:00&amp;#039;);&lt;br /&gt;
 -- 出力: 270&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMESTAMPDIFF(MONTH, &amp;#039;2024-01-15&amp;#039;, &amp;#039;2024-06-15&amp;#039;);&lt;br /&gt;
 -- 出力: 5&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMESTAMPDIFF(YEAR, &amp;#039;2020-01-01&amp;#039;, &amp;#039;2024-01-01&amp;#039;);&lt;br /&gt;
 -- 出力: 4&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;TIMESTAMPDIFF()&amp;lt;/code&amp;gt; 関数は、引数の順序が &amp;lt;code&amp;gt;DATEDIFF()&amp;lt;/code&amp;gt; 関数と逆であることに注意する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== TIMEDIFF ====&lt;br /&gt;
2つの時刻の差分を返す関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 TIMEDIFF(expr1, expr2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
戻り値は、&amp;lt;math&amp;gt;\mbox{expr1} - \mbox{expr2}&amp;lt;/math&amp;gt; の時刻差分 (TIME型) である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT TIMEDIFF(&amp;#039;14:30:00&amp;#039;, &amp;#039;10:00:00&amp;#039;);&lt;br /&gt;
 -- 出力: 04:30:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMEDIFF(&amp;#039;2024-01-15 14:30:00&amp;#039;, &amp;#039;2024-01-15 10:00:00&amp;#039;);&lt;br /&gt;
 -- 出力: 04:30:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIMEDIFF(&amp;#039;10:00:00&amp;#039;, &amp;#039;14:30:00&amp;#039;);&lt;br /&gt;
 -- 出力: -04:30:00&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付・時刻の部分取得 ==&lt;br /&gt;
==== EXTRACT関数 ====&lt;br /&gt;
日付・時刻値から特定の部分を抽出する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 EXTRACT(&amp;lt;抽出する日付・時刻の単位&amp;gt; FROM &amp;lt;対象の日付・時刻値&amp;gt;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;抽出する日付・時刻の単位&amp;gt;&amp;lt;/u&amp;gt; は、YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、MICROSECOND等である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;対象の日付・時刻値&amp;gt;&amp;lt;/u&amp;gt; は、DATE型、DATETIME型、TIMESTAMP型である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT EXTRACT(YEAR FROM &amp;#039;2024-02-15 14:30:45&amp;#039;);&lt;br /&gt;
 -- 出力: 2024&lt;br /&gt;
 &lt;br /&gt;
 SELECT EXTRACT(MONTH FROM &amp;#039;2024-02-15 14:30:45&amp;#039;);&lt;br /&gt;
 -- 出力: 2&lt;br /&gt;
 &lt;br /&gt;
 SELECT EXTRACT(DAY FROM &amp;#039;2024-02-15 14:30:45&amp;#039;);&lt;br /&gt;
 -- 出力: 15&lt;br /&gt;
 &lt;br /&gt;
 SELECT EXTRACT(HOUR FROM &amp;#039;2024-02-15 14:30:45&amp;#039;);&lt;br /&gt;
 -- 出力: 14&lt;br /&gt;
 &lt;br /&gt;
 SELECT EXTRACT(YEAR_MONTH FROM &amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 202402&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 個別の抽出関数 ====&lt;br /&gt;
日付・時刻の各部分を抽出する専用関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 日付・時刻部分抽出関数&lt;br /&gt;
! 関数 !! 戻り値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| YEAR(date) || 整数 || 年 (1000-9999)&lt;br /&gt;
|-&lt;br /&gt;
| MONTH(date) || 整数 || 月 (1-12)&lt;br /&gt;
|-&lt;br /&gt;
| DAY(date) / DAYOFMONTH(date) || 整数 || 日 (1-31)&lt;br /&gt;
|-&lt;br /&gt;
| HOUR(time) || 整数 || 時 (0-23、TIME型は-838～838)&lt;br /&gt;
|-&lt;br /&gt;
| MINUTE(time) || 整数 || 分 (0-59)&lt;br /&gt;
|-&lt;br /&gt;
| SECOND(time) || 整数 || 秒 (0-59)&lt;br /&gt;
|-&lt;br /&gt;
| MICROSECOND(datetime) || 整数 || マイクロ秒 (0-999999)&lt;br /&gt;
|-&lt;br /&gt;
| QUARTER(date) || 整数 || 四半期 (1-4)&lt;br /&gt;
|-&lt;br /&gt;
| WEEK(date [, mode]) || 整数 || 週番号 (0-53)&lt;br /&gt;
|-&lt;br /&gt;
| DAYOFWEEK(date) || 整数 || 曜日番号 (1=日曜 - 7=土曜)&lt;br /&gt;
|-&lt;br /&gt;
| WEEKDAY(date) || 整数 || 曜日番号 (0=月曜 - 6=日曜)&lt;br /&gt;
|-&lt;br /&gt;
| DAYOFYEAR(date) || 整数 || 年内の日数 (1-366)&lt;br /&gt;
|-&lt;br /&gt;
| DAYNAME(date) || 文字列 || 曜日名 (Monday - Sunday)&lt;br /&gt;
|-&lt;br /&gt;
| MONTHNAME(date) || 文字列 || 月名 (January - December)&lt;br /&gt;
|-&lt;br /&gt;
| LAST_DAY(date) || DATE || 月の最終日&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT YEAR(&amp;#039;2024-02-15&amp;#039;), MONTH(&amp;#039;2024-02-15&amp;#039;), DAY(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 2024, 2, 15&lt;br /&gt;
 &lt;br /&gt;
 SELECT HOUR(&amp;#039;14:30:45&amp;#039;), MINUTE(&amp;#039;14:30:45&amp;#039;), SECOND(&amp;#039;14:30:45&amp;#039;);&lt;br /&gt;
 -- 出力: 14, 30, 45&lt;br /&gt;
 &lt;br /&gt;
 SELECT DAYNAME(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: Thursday&lt;br /&gt;
 &lt;br /&gt;
 SELECT MONTHNAME(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: February&lt;br /&gt;
 &lt;br /&gt;
 SELECT DAYOFWEEK(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 5 (木曜日)&lt;br /&gt;
 &lt;br /&gt;
 SELECT WEEKDAY(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 3 (木曜日)&lt;br /&gt;
 &lt;br /&gt;
 SELECT QUARTER(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 1&lt;br /&gt;
 &lt;br /&gt;
 SELECT LAST_DAY(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-29 (閏年)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LAST_DAY()&amp;lt;/code&amp;gt; 関数は、指定月の最終日を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
閏年の2月の場合は、2月29日を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 文字列と日付の変換 ==&lt;br /&gt;
==== STR_TO_DATE ====&lt;br /&gt;
文字列を日付・時刻値に変換する関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 STR_TO_DATE(str, format)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
第1引数は、変換する文字列である。&amp;lt;br&amp;gt;&lt;br /&gt;
第2引数は、第1引数のフォーマットを指定する。(DATE_FORMAT()と同じ指定子)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;2024-02-15&amp;#039;, &amp;#039;%Y-%m-%d&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;02/15/2024&amp;#039;, &amp;#039;%m/%d/%Y&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;2024年02月15日&amp;#039;, &amp;#039;%Y年%m月%d日&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;15.02.2024 14:30:45&amp;#039;, &amp;#039;%d.%m.%Y %H:%i:%s&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15 14:30:45&lt;br /&gt;
 &lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;February 15, 2024&amp;#039;, &amp;#039;%M %d, %Y&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;STR_TO_DATE()&amp;lt;/code&amp;gt; 関数は、変換に失敗した場合はNULLを返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;invalid date&amp;#039;, &amp;#039;%Y-%m-%d&amp;#039;);&lt;br /&gt;
 -- 出力: NULL&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 暗黙の型変換 ====&lt;br /&gt;
MySQLは、文字列を自動的に日付値に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙の型変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &amp;#039;2024-02-15&amp;#039; + INTERVAL 1 DAY;&lt;br /&gt;
 -- 出力: 2024-02-16 (文字列が自動的に日付に変換される)&lt;br /&gt;
 &lt;br /&gt;
 SELECT YEAR(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 2024 (文字列が自動的に日付に変換される)&lt;br /&gt;
 &lt;br /&gt;
 SELECT * FROM events WHERE event_date = &amp;#039;2024-02-15&amp;#039;;&lt;br /&gt;
 -- event_date列がDATE型の場合、文字列が自動的に日付に変換される&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、明示的な変換を推奨する。&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙の型変換は、予期しない結果を招く可能性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UNIXタイムスタンプ ==&lt;br /&gt;
UNIXタイムスタンプ (1970-01-01 00:00:00 UTCからの秒数) と日付の変換関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 UNIX_TIMESTAMP([date])&lt;br /&gt;
 FROM_UNIXTIME(unix_timestamp [, format])&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;UNIX_TIMESTAMP()&amp;lt;/code&amp;gt; 関数は、引数なしの場合は現在のUNIXタイムスタンプ、引数ありの場合は指定日時のUNIXタイムスタンプを返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;FROM_UNIXTIME()&amp;lt;/code&amp;gt; 関数は、UNIXタイムスタンプを日付・時刻値に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT UNIX_TIMESTAMP();&lt;br /&gt;
 -- 出力例: 1739628000 (現在のUNIXタイムスタンプ)&lt;br /&gt;
 &lt;br /&gt;
 SELECT UNIX_TIMESTAMP(&amp;#039;2024-01-01 00:00:00&amp;#039;);&lt;br /&gt;
 -- 出力: 1704067200&lt;br /&gt;
 &lt;br /&gt;
 SELECT FROM_UNIXTIME(1704067200);&lt;br /&gt;
 -- 出力: 2024-01-01 00:00:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT FROM_UNIXTIME(1704067200, &amp;#039;%Y年%m月%d日&amp;#039;);&lt;br /&gt;
 -- 出力: 2024年01月01日&lt;br /&gt;
 &lt;br /&gt;
 -- 現在時刻との往復変換&lt;br /&gt;
 SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());&lt;br /&gt;
 -- 出力: 現在の日時&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;UNIX_TIMESTAMP()&amp;lt;/code&amp;gt; 関数は、BIGINT型 (符号あり64ビット整数) を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
タイムゾーンの影響を受けるため、注意が必要である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;UNIX_TIMESTAMP()&amp;lt;/code&amp;gt; 関数は、セッション時刻をUTCに変換してからタイムスタンプを計算する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;FROM_UNIXTIME()&amp;lt;/code&amp;gt; 関数は、UTCタイムスタンプをセッション時刻に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== その他の日付関数 ==&lt;br /&gt;
その他の日付・時刻関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ その他の日付・時刻関数&lt;br /&gt;
! 関数 !! 説明 !! 例&lt;br /&gt;
|-&lt;br /&gt;
| MAKEDATE(year, dayofyear) || 年と年内日数から日付を生成 || MAKEDATE(2024, 46) → 2024-02-15&lt;br /&gt;
|-&lt;br /&gt;
| MAKETIME(hour, minute, second) || 時、分、秒から時刻を生成 || MAKETIME(14, 30, 45) → 14:30:45&lt;br /&gt;
|-&lt;br /&gt;
| SEC_TO_TIME(seconds) || 秒数をTIME値に変換 || SEC_TO_TIME(3665) → 01:01:05&lt;br /&gt;
|-&lt;br /&gt;
| TIME_TO_SEC(time) || TIME値を秒数に変換 || TIME_TO_SEC(&amp;#039;01:01:05&amp;#039;) → 3665&lt;br /&gt;
|-&lt;br /&gt;
| TO_DAYS(date) || 日付を通算日数に変換 (紀元0年からの日数) || TO_DAYS(&amp;#039;2024-02-15&amp;#039;) → 739299&lt;br /&gt;
|-&lt;br /&gt;
| FROM_DAYS(n) || 通算日数を日付に変換 || FROM_DAYS(739299) → 2024-02-15&lt;br /&gt;
|-&lt;br /&gt;
| GET_FORMAT(type, format_name) || ロケール別フォーマット文字列を取得 || GET_FORMAT(DATE, &amp;#039;EUR&amp;#039;) → &amp;#039;%d.%m.%Y&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT MAKEDATE(2024, 100);&lt;br /&gt;
 -- 出力: 2024-04-09 (2024年の100日目)&lt;br /&gt;
 &lt;br /&gt;
 SELECT MAKETIME(14, 30, 45);&lt;br /&gt;
 -- 出力: 14:30:45&lt;br /&gt;
 &lt;br /&gt;
 SELECT SEC_TO_TIME(86400);&lt;br /&gt;
 -- 出力: 24:00:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT TIME_TO_SEC(&amp;#039;24:00:00&amp;#039;);&lt;br /&gt;
 -- 出力: 86400&lt;br /&gt;
 &lt;br /&gt;
 SELECT TO_DAYS(&amp;#039;2024-02-15&amp;#039;);&lt;br /&gt;
 -- 出力: 739299&lt;br /&gt;
 &lt;br /&gt;
 SELECT FROM_DAYS(739299);&lt;br /&gt;
 -- 出力: 2024-02-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_FORMAT(&amp;#039;2024-02-15&amp;#039;, GET_FORMAT(DATE, &amp;#039;EUR&amp;#039;));&lt;br /&gt;
 -- 出力: 15.02.2024&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_FORMAT(&amp;#039;2024-02-15&amp;#039;, GET_FORMAT(DATE, &amp;#039;USA&amp;#039;));&lt;br /&gt;
 -- 出力: 02.15.2024&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;GET_FORMAT()&amp;lt;/code&amp;gt; 関数の形式名には、EUR (ヨーロッパ)、USA (アメリカ)、JIS (日本)、ISO (国際標準)、INTERNAL (MySQL内部形式) が使用できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== タイムゾーン ==&lt;br /&gt;
MySQLは、タイムゾーン変換機能を提供している。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
タイムゾーン変換関数を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
 CONVERT_TZ(&amp;lt;変換対象の日付・時刻値&amp;gt;, &amp;lt;変換元のタイムゾーン  例: &amp;#039;+00:00&amp;#039;、&amp;#039;UTC&amp;#039;&amp;gt;,  &amp;lt;変換先のタイムゾーン  例: &amp;#039;+09:00&amp;#039;、&amp;#039;Asia/Tokyo&amp;#039;&amp;gt;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
第1引数を、第2引数タイムゾーンから第3引数タイムゾーンに変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CONVERT_TZ(&amp;#039;2024-02-15 12:00:00&amp;#039;, &amp;#039;UTC&amp;#039;, &amp;#039;Asia/Tokyo&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-15 21:00:00 (UTC+9時間)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONVERT_TZ(&amp;#039;2024-02-15 12:00:00&amp;#039;, &amp;#039;Asia/Tokyo&amp;#039;, &amp;#039;America/New_York&amp;#039;);&lt;br /&gt;
 -- 出力: 2024-02-14 22:00:00 (東京からニューヨークへの変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONVERT_TZ(NOW(), &amp;#039;+00:00&amp;#039;, &amp;#039;+09:00&amp;#039;);&lt;br /&gt;
 -- 出力: UTCから日本時間への変換&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
タイムゾーン設定は、セッションレベルまたはグローバルレベルで設定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- セッションタイムゾーンの確認&lt;br /&gt;
 SELECT @@session.time_zone;&lt;br /&gt;
 &lt;br /&gt;
 -- グローバルタイムゾーンの確認&lt;br /&gt;
 SELECT @@global.time_zone;&lt;br /&gt;
 &lt;br /&gt;
 -- セッションタイムゾーンの設定&lt;br /&gt;
 SET time_zone = &amp;#039;Asia/Tokyo&amp;#039;;&lt;br /&gt;
 SET time_zone = &amp;#039;+09:00&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- グローバルタイムゾーンの設定 (要SUPER権限)&lt;br /&gt;
 SET GLOBAL time_zone = &amp;#039;Asia/Tokyo&amp;#039;;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
TIMESTAMP型は、格納時にUTCに変換され、取得時にセッション時刻に自動変換される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
TIMESTAMP型の自動変換例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- セッション時刻を日本時間に設定&lt;br /&gt;
 SET time_zone = &amp;#039;Asia/Tokyo&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 CREATE TABLE logs (&lt;br /&gt;
    log_id INT PRIMARY KEY,&lt;br /&gt;
    log_timestamp TIMESTAMP&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- 日本時間で挿入&lt;br /&gt;
 INSERT INTO logs VALUES (1, &amp;#039;2024-02-15 12:00:00&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 -- セッション時刻をUTCに変更&lt;br /&gt;
 SET time_zone = &amp;#039;UTC&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- UTCで取得される (12:00:00 - 9時間 = 03:00:00)&lt;br /&gt;
 SELECT log_timestamp FROM logs WHERE log_id = 1;&lt;br /&gt;
 -- 出力: 2024-02-15 03:00:00&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;DATETIME型は、タイムゾーン非対応であり、格納時の値がそのまま保持される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日付・時刻関数を使用する時の注意 ==&lt;br /&gt;
==== インデックスと関数適用 ====&lt;br /&gt;
WHERE句で日付カラムに関数を適用すると、インデックスが無効化される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
非効率な例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- インデックスが使用されない&lt;br /&gt;
 SELECT * FROM sales WHERE YEAR(sale_date) = 2024;&lt;br /&gt;
 SELECT * FROM sales WHERE DATE(order_datetime) = &amp;#039;2024-02-15&amp;#039;;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
効率的な書き換え例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- インデックスが使用される&lt;br /&gt;
 SELECT * FROM sales&lt;br /&gt;
 WHERE sale_date BETWEEN &amp;#039;2024-01-01&amp;#039; AND &amp;#039;2024-12-31&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 SELECT * FROM sales&lt;br /&gt;
 WHERE order_datetime &amp;gt;= &amp;#039;2024-02-15&amp;#039; AND order_datetime &amp;lt; &amp;#039;2024-02-16&amp;#039;;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
カラムに関数を適用せず、範囲検索に変換することで、インデックスが有効化される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 2038年問題 ====&lt;br /&gt;
TIMESTAMP型は、UNIXタイムスタンプの制約により、2038-01-19 03:14:07 UTC以降の日付を扱えない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2038年以降の日付を扱う場合は、DATETIME型の使用を推奨する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- TIMESTAMP型の限界&lt;br /&gt;
 SELECT FROM_UNIXTIME(2147483647);&lt;br /&gt;
 -- 出力: 2038-01-19 03:14:07&lt;br /&gt;
 &lt;br /&gt;
 -- DATETIME型は2038年以降も対応&lt;br /&gt;
 SELECT &amp;#039;2050-01-01 00:00:00&amp;#039; + INTERVAL 10 YEAR;&lt;br /&gt;
 -- 出力: 2060-01-01 00:00:00&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== NULL値の扱い ====&lt;br /&gt;
ほとんどの日付関数は、NULL引数に対してNULLを返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT YEAR(NULL);&lt;br /&gt;
 -- 出力: NULL&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATE_ADD(NULL, INTERVAL 1 DAY);&lt;br /&gt;
 -- 出力: NULL&lt;br /&gt;
 &lt;br /&gt;
 SELECT DATEDIFF(&amp;#039;2024-02-15&amp;#039;, NULL);&lt;br /&gt;
 -- 出力: NULL&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NULL値を含む可能性がある場合は、&amp;lt;code&amp;gt;COALESCE()&amp;lt;/code&amp;gt; 関数 や &amp;lt;code&amp;gt;IFNULL()&amp;lt;/code&amp;gt; 関数で対処する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT YEAR(COALESCE(event_date, CURDATE())) FROM events;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== MySQL 8.0での新機能 ====&lt;br /&gt;
MySQL 8.0では、以下に示す日付・時刻関連の改善が行われている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 小数秒精度のサポート拡張&lt;br /&gt;
*: DATETIME、TIMESTAMP、TIME型でfsp 0-6をサポート&lt;br /&gt;
* TIMESTAMP型の自動更新改善&lt;br /&gt;
*: DEFAULT CURRENT_TIMESTAMP、ON UPDATE CURRENT_TIMESTAMPの動作改善&lt;br /&gt;
* タイムゾーン変換の強化&lt;br /&gt;
*: タイムゾーンテーブルの更新、CONVERT_TZ()のパフォーマンス改善&lt;br /&gt;
* ウィンドウ関数との組み合わせ&lt;br /&gt;
*: LAG()、LEAD()等のウィンドウ関数で日付・時刻値を扱える&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MySQL 8.0でのウインドウ関数の使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT&lt;br /&gt;
    order_date,&lt;br /&gt;
    order_amount,&lt;br /&gt;
    LAG(order_date) OVER (ORDER BY order_date) AS prev_order_date,&lt;br /&gt;
    DATEDIFF(order_date, LAG(order_date) OVER (ORDER BY order_date)) AS days_since_last_order&lt;br /&gt;
 FROM orders;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,MySQL,SQL,Database,Date,Time,DateTime,Timestamp,DateFormat,DateAdd,DateDiff,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:MySQL]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>