MW211 EXIT

devlog
PostgreSQL/一定期間の配列を求める
2012年06月15日
例えば、本日の11:30から12:29までの「年月日時分(yyyymmddhhii)」の文字列を
配列で求めたい場合、どうすればよいか。

「generate_series()」という配列を生成する便利な関数があるので、
以下のように編集してあげればよい。
┌──────────────────────────────────────┐
│SELECT to_char(current_date, 'yyyymmdd') || CASE WHEN generate_series < 0   │
│         THEN to_char(generate_series + 60, 'FM1100')                       │
│         ELSE to_char(generate_series     , 'FM1200')                       │
│       END AS "yyyymmddhhii"                                                │
│    FROM generate_series(-30, 29, 1);                                       │
└──────────────────────────────────────┘

しかし、「generate_series()」は日時のループもできるので、直接以下でもOK。
┌──────────────────────────────────────┐
│SELECT to_char(current_date, 'yyyymmdd')                                    │
│    || to_char(generate_series, 'FMhhmi') AS "yyyymmddhhii"                 │
│    FROM generate_series(TIMESTAMP '2001-01-01 11:30:00',                   │
│                         TIMESTAMP '2001-01-01 12:29:00',                   │
│                         '1 minute')                                        │
└──────────────────────────────────────┘

で、本日の11:30から12:29までをループさせるという完成形は以下のとおり。
┌──────────────────────────────────────┐
│SELECT to_char(generate_series, 'yyyymmddhhmi') AS "yyyymmddhhii"           │
│    FROM generate_series(current_date + interval '11:30',                   │
│                         current_date + interval '12:29',                   │
│                         interval '00:01')                                  │
└──────────────────────────────────────┘
これは便利。
分類:PostgreSQL