データベース | 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をしています。