MySQLの時間のフォーマット

MySQLのdatetime型はそのままSELECTすると、
2013-05-15 13:45:59
のように表示されてしまいます。
yyyy-mm-ddではなく、yyyy/mm/dd
がいい場合もあります。

DATE_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 と組み合わせて使用。

%fでマイクロ秒まであるのには驚きです。

mysql> select now(),DATE_FORMAT(now(),'%Y/%m/%d %H:%i:%S'),DATE_FORMAT(now(),'%Y/%m/%d %H:%i:%S.%f');
+---------------------+----------------------------------------+-------------------------------------------+
| now()               | DATE_FORMAT(now(),'%Y/%m/%d %H:%i:%S') | DATE_FORMAT(now(),'%Y/%m/%d %H:%i:%S.%f') |
+---------------------+----------------------------------------+-------------------------------------------+
| 2013-05-17 06:19:04 | 2013/05/17 06:19:04                    | 2013/05/17 06:19:04.000000                |
+---------------------+----------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

マイクロ秒が0になっていますね・・・ :x001:
これは、私のMySQLのバージョンが5.0だからです。
5.6以上のMySQLをご使用なら、datetime型はマイクロ秒まで対応しているので正しく表示されるはずです。

mysql> select version();
+------------+
| version()  |
+------------+
| 5.0.95-log |
+------------+
1 row in set (0.01 sec)
タイトルとURLをコピーしました