SQL

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

更新日:

データベースORACLEMySQLPostgreSQL
対応状況

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

目次
MySQL
ORACLE
PostgreSQL

■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()で使用できる文字です。

文字説明
%Y4桁の年を表示2006
%y2桁の年を表示06
%M月の名前を英語で表示September
%m月を数字で表示09
%c月を数字で頭の0無しで表示9
%d日付を表示23
%W曜日を表示Wednesday
%pAM、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日
(1 row)

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

使用例

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

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

  • この記事を書いた人

sasuke

インフラエンジニアからwebエンジニアに転職し両方の強みを生かしていければと思います。

-SQL

Copyright© さすけのプログラミング入門 , 2019 All Rights Reserved.