忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PostgreSQL:PostgreSQLではオラクルの様なDUAL表は存在しません
PostgreSQLでシステム日付を取得する場合には、以下の様なFROMの無いSQL文で行います。 PostgreSQLではFROMが必要なければ記述することはありません。

PostgreSQLの「SQL Shell(psql)」で実行します。
postgres=# SELECT NOW();
            now
----------------------------
 2016-03-10 14:44:20.369+09
(1 行)


定数を同時にSELECT取得することもできます。
postgres=# SELECT NOW() AS DATETIME, 1 AS NumberTest, 'TEST' AS StringTest;
          datetime          | numbertest | stringtest
----------------------------+------------+------------
 2016-03-10 14:47:16.987+09 |          1 | TEST
(1 行)


ここで、PostgreSQLの面白い関数について紹介します。 それが「generate_series」で複数行の整数を返すことができます。

関数動作内容
generate_series(start, stop) グラフィックstartからstopまでの刻み1で連続する値を生成
generate_series(start, stop, step) startからstopまでの刻みstepで連続する値を生成


以下にその例を示します。

postgres=# SELECT generate_series(1, 3);
 generate_series
-----------------
               1
               2
               3
(3 行)

postgres=# SELECT * FROM generate_series(1, 3);
 generate_series
-----------------
               1
               2
               3
(3 行)

postgres=# SELECT NumTbl.NumVal FROM generate_series(1, 3) AS NumTbl(NumVal);
 numval
--------
      1
      2
      3
(3 行)

1番目の様にSELECT文のなかのカラムを記述するところにいれてもいいですし、 また、2番目の様にFROM句でテーブル扱いにしてもOKです。 さらに、3番目ではテーブルの別名として「NumTbl(NumVal)」(仮にここでの命名)とすると 生成される数値を「NumTbl」テーブルのカラム名「NumVal」で参照ができます。

この3番目の方法を使うことでいろいろ応用が利くと思います。 以下は、今日からの3日間を羅列するSQL文になります。

postgres=# SELECT current_date + N.V FROM generate_series(1, 3) AS N(V);
  ?column?
------------
 2016-03-11
 2016-03-12
 2016-03-13
(3 行)




=====
2016/03/05:の時の情報











PR

コメント

コメントを書く