記事内に広告が含まれています。

【Oracle】SYSDATEとTO_CHARを使用してシステム日付を取得する

OracleのSYSDATEを使用してシステム日付を取得する方法です。データの更新時間等で使用する場合が多いSYSDATEですが、そのまま使用するよりも、ちょっとカスタマイズして使用する場合が多いです。

【スポンサーリンク】

SYSDATEとは

SYSDATEとは、OracleのSQL言語リファレンスには「データベース・サーバーが存在するオペレーティング・システムの現在の日付と時刻のセットを戻します。」と記載があります。

SYSDATE

簡単に言えば、データベース内部に持っている日付と時刻を取得するということです。試しに、Oracle Application Express(Oracle APEX)でSYSDATEを実行してみます。

f:id:neko_britannia:20200818210301j:plain

こんな感じに出てきます。FROM句にDUALテーブルにしなくてもSYSDATEは取得可能です。戻り値はDATE型です。

【スポンサーリンク】

TO_CHARを使用して日付フォーマットを指定する

さて、SYSDATEですが、フォーマット指定で日付形式を変えることが出来ます。よくある「yyyymmdd」や「yyyy/mm/dd」という形式にすることで、システムで扱いやすくすると言った方法です。TO_CHARを使用すれば欲しいフォーマットで取得できます。

yyyymmdd形式・yyyy/mm/dd形式

もっとも使用される日付形式の一つです。

SELECT TO_CHAR(SYSDATE,'yyyymmdd') FROM DUAL;

「yyyymmdd」は小文字でも大文字でもOKです。上記を実行します。

f:id:neko_britannia:20200818211507j:plain

yyyymmdd形式で出ましたね。また、スラッシュ付き(yyyy/mm/dd)で日付を取得したい場合は以下の様にします。

SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd') FROM DUAL;

では、これも実行します。

f:id:neko_britannia:20200818211705j:plain

yyyy/mm/dd形式で取得できましたね。

yyyymmdd HH24:MI:SS形式

システムの日付だけでなく、時間まで取得したい場合です。これも日付の時と同様にTO_CHARの第二引数に取得したい形式を指定します。

SELECT TO_CHAR(SYSDATE,'yyyymmdd HH24:MI:SS') FROM DUAL;

これを実行してみます。

f:id:neko_britannia:20200818212305j:plain

時刻まで取得できましたね。

【スポンサーリンク】

年だけ、月だけ、日付だけ、時間だけ…みたいな場合

上記で紹介した例は「yyyymmdd」と言った年月日や、「HH24:MI:SS」と言った時分秒をまとめて取得しましたが、「西暦だけ取得」とか「時間だけ取得したい」場合もTO_CHARを用いることで取得可能です。例えば、西暦だけ欲しいという場合は、次の様に記述します。

SELECT TO_CHAR(SYSDATE,'yyyy') FROM DUAL;

先ほどと同じで第二引数にyyyyと記述するだけです。

f:id:neko_britannia:20200818213039j:plain

また、yyとすれば、西暦の下二桁を取得できます。

f:id:neko_britannia:20200818213154j:plain

こんな感じでSYSDATEとTO_CHARを使えば、システム日付をカスタマイズして取得することが可能です。フォーマットの詳細はOracle社の書式モデルのページを確認して下さい。

書式モデル
【スポンサーリンク】

関連記事

【Oracle】SELECT文の基本
OracleにおけるSELECT文の基本的な使い方です。
【Oracle】SYSTIMESTAMPを使ってミリ秒以下を表示する
OracleのSYSTIMESTAMPを使用して、SYSDATEよりも高精度なシステム日付を取得する方法です。SYSDATEは秒まで表示できますが、SYSTIMESTAMPはミリ秒以下を表示してくれます。

.