SQL道場 仮想表(DUAL)を使う方法
Oracle、MySQL、SQLServerで関数テストやDBシステム日付のみ取得する時など表(テーブル)にアクセスする必要がないSQLを実行したい時の方法を記載
Oracleの場合
Oracleデータベースの場合は、DUALという仮想表を使用します。
SELECT 関数 FROM DUAL;
SQLでデータベースのシステム日付のみを取得したい場合の例です。
SELECT SYSDATE FROM DUAL;
システム日付(SYSDATE)を取得し、TO_CHAR関数で年月日・時分秒の形式に変換し出力する
SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd hh:mi:ss') "DATE/TIME" FROM DUAL;
システム日付(SYSDATE)を取得し、TO_CHAR関数で年月日・時(24時間表示)の形式に変換し出力する
SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd hh24:mi:ss') "DATE/TIME" FROM DUAL;
システム日付(SYSDATE)を取得し、today(本日)、yesterday(昨日)として1日前、tommorow(明日)として1日後、lastday(末日)としてLAST_DAY関数により月の末日を算出して表示します。
SELECT
SYSDATE "today"
,SYSDATE -1 "yesterday"
,SYSDATE + 1 "tommorow"
,LAST DAY(SYSDATE) "lastday"
FROM DUAL;
LAST_DAY関数により月の末日を求めて、システム日付との差によって本日から月の末日までの残りの日数を算出しています。
SELECT LAST DAY (SYSDATE) - SYSDATE "月末までの日数" FROM DUAL;
SQL Serverの場合
SQLServerついては、「DUAL」という名前の仮想表がないので、「FROM DUAL」を省略します。
SELECT 関数;
現在の日付と時間を取得する
SELECT CURRENT_TIMESTAMP
仮想表を使って、サブクエリの結果を表示する方法
SELECT
(SELECT CT_NAME FROM [SampleDB].[dbo].[MST_CUSTOME] WHERE ID='1') AS ID1_NAME,
(SELECT CT_NAME FROM [SampleDB].[dbo].[MST_CUSTOME] WHERE ID='2') AS ID2_NAME
MySQLの場合
MySQLについては、「DUAL」という名前の仮想表がないので、「FROM DUAL」を省略します。
仮想表を使用した現在の日付取得
SELECT CURRENT_DATE ;