SQLでシステム日付、誕生日を使用して年齢、システム日付~誕生日までの月数、日数を取得するSQLをメモしておきます。
以下はOracleでの実行例となっています。
サンプルテーブル
「BIRTHDAY」テーブル
【Oracle】システム日付と誕生日から年齢、誕生日までの月数、日数を表示する例
クエリー(SQL)例
SELECT
TO_CHAR (sysdate ,'YYYY-MM-DD' ) "本日の日付" ,
TO_CHAR (b.BIRTHDAY,'YYYY-MM-DD' ) "誕生日" ,
EXTRACT (YEAR FROM sysdate ) - EXTRACT (YEAR FROM b.BIRTHDAY) "年齢" ,
TRUNC (MONTHS_BETWEEN (sysdate ,b.BIRTHDAY)) "誕生日までの月数" ,
TRUNC (sysdate - b.BIRTHDAY) "誕生日までの日数"
FROM dual, BIRTHDAY b;
実行結果
SQL PlusやSQL Developerに用意されている「DESCRIBE」コマンドを使用することでテーブル構造を確認することが出来ます。
DESCRIBEコマンドはDESCと省略することも出来ます。
SQL PlusでのDESCRIBEコマンド実行例
「DESCRIBE テーブル名」でテーブル構造が確認できます。
SQL PlusでのDESCコマンド実行例
DESCでもDESCRIBEと同じ結果を取得できます。
SQLを見てるとたまにWHERE句内で「(+)」と記載されているのを見かけることがあります。
この「(+)」はOracle独自で記載が可能となる外部結合演算子といって、「g.GOODS_CODE = gt.GOODS_CODE(+)」のように指定するとLEFT OUTER JOINと同じ結果を取得することが出来ます。
サンプルテーブル
「GOODS」テーブル
「GOODS_TYPE」テーブル
外部結合演算子を利用したクエリー(SQL)例
SELECT g.name, gt.type_name
FROM USER1.GOODS g, USER1.GOODS_TYPE gt
WHERE g.GOODS_CODE = gt.GOODS_CODE(+);
通常の左外部結合でのクエリー(SQL)例
SELECT g.name, gt.type_name
FROM USER1.GOODS g
LEFT OUTER JOIN USER1.GOODS_TYPE gt ON g.GOODS_CODE = gt.GOODS_CODE;
実行結果
外部結合演算子、左外部結合どちらも同じ結果となります。
投稿ナビゲーション
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。