SQL 日付、時刻の取得、フォーマット変更(MySQL、PostgreSQL、ORACLE)

3 min 47 views
データベース ORACLE MySQL PostgreSQL
対応状況

SQLでの日付、時刻、曜日の取得方法、フォーマットの変更方法です。
各種データーベースによって取得方法に違いがありますので注意してください。

MySQL日付、時刻、曜日などその他色々な取得例

時間を取得する方法です。

使用例
mysql> select current_time;
+--------------+
| current_time |
+--------------+
| 06:43:15     |
+--------------+

日付の取得

使用例
mysql> select current_date;
+--------------+
| current_date |
+--------------+
| 2006-09-13   |
+--------------+

日付、時刻の取得

使用例
mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2006-09-13 06:14:47 |
+---------------------+

日付、時刻の取得

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2006-11-23 13:49:22 |
+---------------------+

曜日の取得

使用例
mysql> SELECT DAYNAME(NOW());
+----------------+
| DAYNAME(NOW()) |
+----------------+
| Friday         |
+----------------+

曜日を数字で取得(月曜日が0で1ずつ増えていきます)

使用例
mysql> SELECT weekday(now());
+----------------+
| weekday(now()) |
+----------------+
|              0 |
+----------------+

今年に入って何日経過したかを取得

使用例
mysql> SELECT dayofmonth(now());
+-------------------+
| dayofmonth(now()) |
+-------------------+
|                15 |
+-------------------+

月末の日付を取得する

使用例
mysql> SELECT last_day(now());
+-----------------+
| last_day(now()) |
+-----------------+
| 2007-01-31      |
+-----------------+

MySQLフォーマットの変更

DATE_FORMAT()を使用すると様々なフォーマットに変更することが出来ます。
下の表はDATE_FORMAT()で使用できる文字です。

文字 説明
%Y 4桁の年を表示 2006
%y 2桁の年を表示 06
%M 月の名前を英語で表示 September
%m 月を数字で表示 09
%c 月を数字で頭の0無しで表示 9
%d 日付を表示 23
%W 曜日を表示 Wednesday
%p AM、PMを表示 PM
%r 時刻を12時間表記で表示 09:14:34 PM
%k 時刻を24時間表記で表示 21
%i 分を表示 34
%s 秒を表示 20

年/月/日にフォーマットにした例

mysql> SELECT DATE_FORMAT(now(),'%Y/%m/%d');
+-------------------------------+
| DATE_FORMAT(now(),'%Y/%m/%d') |
+-------------------------------+
| 2006/11/23                    |
+-------------------------------+

○○○○年○○日○○日にフォーマットした例

使用例
mysql> SELECT DATE_FORMAT(now(),'%Y年%m月%d日');
+-----------------------------------+
| DATE_FORMAT(now(),'%Y年%m月%d日') |
+-----------------------------------+
| 2006年11月23日                    |
+-----------------------------------+

ORACLEフォーマットの変更

年/月/日にフォーマットにした例

使用例
SELECT TO_CHAR(hire_date,'yyyy/mm/dd') FROM dual;

○○○○年○○日○○日にフォーマットした例

使用例
SELECT TO_CHAR(hire_date,'yyyy"年"mm"月"dd"日"') FROM dual;

PostgreSQLフォーマットの変更

年/月/日にフォーマットにした例

使用例
SELECT TO_CHAR(current_timestamp, 'yyyy/mm/dd');
  to_char
------------
 2011/02/13
(1 row)

○○○○年○○日○○日にフォーマットした例

使用例
SELECT TO_CHAR(current_timestamp, 'yyyy"年"mm"月"dd"日"');
    to_char
----------------
 2011年02月13日

今日の曜日を表示する

PostgreSQLでは、日曜日[0]、から始まり土曜日が[6]になります。
それを応用して配列に曜日を入れておくことで日本語表記の曜日が取得できます。

使用例
SELECT (ARRAY['日','月','火','水','木','金','土'])
[extract('dow' FROM current_timestamp) + 1];
 array
-------
 日
(1 row)

※配列の添字は[1]から始まっているため+1をしています。

さすけ

さすけ

インフラエンジニアとして数々の大手サーバーを構築を実施し、現在はWebサーバーの構築、サイト作成を中心に活躍しています。

FOLLOW

カテゴリー:
関連記事