DBの管理をしていると、日付を指定してデータを取得する事が多々あります。
MS SQLの時は、CAST, CONVERTなどで日付を成形して指定された日付のデータ
を取得しておりましたが、MYSQLではこのDATE_FORMAT()やTIME_FORMAT()
を利用すると比較的簡単にデータの操作が出来ます。

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

mysql> SELECT something FROM tbl_name
WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30; ------------------------------------------------------------------------------------------------------

DATE_FORMAT


mysql> SELECT
-> DATE_FORMAT(CurDate(),'%Y') as year ,
-> DATE_FORMAT(CurDate(),'%m') as month ,
-> DATE_FORMAT(CurDate(),'%d') as day;
+------+-------+------+
| year | month | day |
+------+-------+------+
| 2009 | 07 | 14 |
+------+-------+------+
1 row in set (0.00 sec)

mysql>
mysql> SELECT
-> DATE_FORMAT(CurDate(),'%Y年') as '年',
-> DATE_FORMAT(CurDate(),'%Y年%m月') as '年月',
-> DATE_FORMAT(CurDate(),'%Y年%m月%d日') as '年月日';
+--------+------------+----------------+
| 年 | 年月 | 年月日 |
+--------+------------+----------------+
| 2009年 | 2009年07月 | 2009年07月14日 |
+--------+------------+----------------+
1 row in set (0.00 sec)

mysql>

data_format

————————————————————————————————–
指定子 概要
————————————————————————————————–
%M 月の名前(January..December)
%W 曜日名(Sunday..Saturday)
%D 英語のサフィックス付きの日付(0th、1st、2nd、3rd など)
%Y 4 桁の数値で表した年
%y 2 桁の数値で表した年
%X 日曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年%V と組み合わせて使用
%x 月曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年%v と組み合わせて使用
%a 略式の曜日名(Sun..Sat)
%d 数値で表した日付(00..31)
%e 数値で表した日付(0..31)
%m 数値で表した月(00..12)
%c 数値で表した月(0..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 に続けて AM または PM)
%T 24 時間形式の時刻(hh:mm:ss)
%S 秒(00..59)
%s 秒(00..59)
%f マイクロ秒(000000..999999)
%p AM または PM
%w 曜日(0=Sunday..6=Saturday)
%U 日曜日を週の最初の日とした場合の週(00..53)
%u 月曜日を週の最初の日とした場合の週(00..53)
%V 日曜日を週の最初の日とした場合の週(01..53)%X と組み合わせて使用
%v 月曜日を週の最初の日とした場合の週(01..53)%x と組み合わせて使用
%% リテラルの ‘%’
————————————————————————————————–

TIME_FORMAT()

DATE_FORMAT()関数と同じ動作をしますが、この関数は、フォーマット文字列formatに時、分、秒を
処理する形式指定子しか指定できません。 それ以外の指定子を指定した場合は、NULLまたは0が
返されます。


mysql> SELECT TIME_FORMAT(NOW(), '%H:%i:%s');
+--------------------------------+
| TIME_FORMAT(NOW(), '%H:%i:%s') |
+--------------------------------+
| 04:58:56 |
+--------------------------------+
1 row in set (0.00 sec)

mysql>

time_format


6.3.4. 日付と時刻関数


時間関数: 4.1の新しい機能

Comments are closed.

Post Navigation