- 2007/06/20
- PHP
久々に PostgreSQL をさわることになって、タイムスタンプから2006年のレコードだけを抜き出したいなーとSQLを書こうとしたら、そういえば PostgreSQL では、タイムスタンプを指定したフォーマットで返す関数はなんなんだろ、と思ったので、MySQL と PostgreSQL でよく使われると思われる日付フォーマット表を作ってみた。
MySQLとPostgreSQL日付フォーマット関数の違い
| フォーマット | MySQL | PostgreSQL |
|---|---|---|
| 年(2006~2007) | date_format(time,"%Y") | to_char(time,'YYYY') |
| 年(06~07) | date_format(time,"%y") | to_char(time,'YY') |
| 月(01~12) | date_format(time,"%m") | to_char(time,'MM') |
| 月(1~12) | date_format(time,"%c") | |
| 日(01~31) | date_format(time,"%d") | to_char(time,'DD') |
| 日(1~31) | date_format(time,"%e") | |
| 月-文字(January~December) | date_format(time,"%M") | to_char(time,'Month') |
| 月-文字(Jan~Dec) | date_format(time,"%b") | to_char(time,'Mon') |
| 曜日-文字(Sunday~Saturday) | date_format(time,"%W") | to_char(time,'Day') |
| 曜日-文字(Sun~Sat) | date_format(time,"%a") | to_char(time,'Dy') |
| 曜日-数字(0=Sun~6=Sat) | date_format(time,"%w") | |
| 曜日-数字(1=Sun~7=Sat) | to_char(time,'D') | |
| 時(00~23) | date_format(time,"%H") | to_char(time,'HH24') |
| 時(0~23) | date_format(time,"%k") | |
| 分(00~59) | date_format(time,"%i") | to_char(time,'MI') |
| 秒(00~59) | date_format(time,"%s") | to_char(time,'SS') |
気をつけるべきなのは、曜日を数値として返す部分。MySQLでは 0 が日曜を表すのに比べ、PostgreSQL では 1 が日曜を表し 7 まである。
参考リンク
- Newer: あわせて読みたいに表示されたブログに訪れてみた
- Older: MySQLだけで文字列を一括置換する