このエントリーをはてなブックマークに追加


日時情報からYYYYMMDDを取り出す方法

to_char関数を使い、timestamp型に格納された値から日付を取り出し、出力フォーマットを加工する方法を以下に記します。
本資料は、参考資料に記したPostgreSQLオンラインマニュアルの一部を引用および利用しています。

参考資料

to_char関数を利用した例

以下にto_char関数について記します。

to_char関数の書式

to_char関数の書式は以下のようになります。

to_char(timestamp, text)

textの部分が出力書式となります。

出力書式

この資料では、実際に使用すると思われる書式のみ抜粋しています。
詳細は、上記参考資料のPostgreSQLオンラインマニュアルで確認してみてください。
尚、以下のパターンは英大文字ですが、英小文字でも同様の動作をします。

パターン出力
YYYY年(4桁)
YY年(下2桁)
MM月(01-12)
DD日(01-31)
HH時(01-12)
HH12時(01-12)
HH24時(01-23)
MI分(00-59)
SS秒(00-59)
MS秒(000-999)

to_char関数の実行例

以下のようにtimestampデータをinsertしてからto_char関数を確かめています。

create table t1 (
  c1 timestamp
);

insert into t1 values
('2012-01-10 01:01:01'),
('2012-02-20 03:10:11'),
('2012-03-30 05:20:22'),
('2012-04-04 07:30:33'),
('2012-05-05 09:40:44'),
('2012-06-06 11:50:55'),
('2012-07-11 13:59:44'),
('2012-08-21 15:40:33'),
('2012-09-30 17:30:22'),
('2012-10-10 19:20:11'),
('2012-11-20 21:10:00'),
('2012-12-31 23:00:01');

上記SQLを実行した後の状態です。

sakura=# \d t1
             テーブル "public.t1"
 カラム |             型              | 修飾語 
--------+-----------------------------+--------
 c1     | timestamp without time zone | 

sakura=# select * from t1;
         c1          
---------------------
 2012-01-10 01:01:01
 2012-02-20 03:10:11
 2012-03-30 05:20:22
 2012-04-04 07:30:33
 2012-05-05 09:40:44
 2012-06-06 11:50:55
 2012-07-11 13:59:44
 2012-08-21 15:40:33
 2012-09-30 17:30:22
 2012-10-10 19:20:11
 2012-11-20 21:10:00
 2012-12-31 23:00:01
(12 行)

to_charでyyyy/mm/dd hh24:mi:ss を実行してみる

上記SQLで準備したデータを使用しyyyy-mm-dd hh24:mi:ssを試してみます。

sakura=# select to_char(c1, 'yyyy/mm/dd hh24:mm:ss') from t1;
       to_char       
---------------------
 2012/01/10 01:01:01
 2012/02/20 03:02:11
 2012/03/30 05:03:22
 2012/04/04 07:04:33
 2012/05/05 09:05:44
 2012/06/06 11:06:55
 2012/07/11 13:07:44
 2012/08/21 15:08:33
 2012/09/30 17:09:22
 2012/10/10 19:10:11
 2012/11/20 21:11:00
 2012/12/31 23:12:01
(12 行)

変換した後のカラム名がto_charとなっているのを修正する

as を利用して表示をc1としました。

sakura=# select to_char(c1, 'yyyy/mm/dd hh24:mm:ss') as c1 from t1;
         c1          
---------------------
 2012/01/10 01:01:01
 2012/02/20 03:02:11
 2012/03/30 05:03:22
 2012/04/04 07:04:33
 2012/05/05 09:05:44
 2012/06/06 11:06:55
 2012/07/11 13:07:44
 2012/08/21 15:08:33
 2012/09/30 17:09:22
 2012/10/10 19:10:11
 2012/11/20 21:11:00
 2012/12/31 23:12:01
(12 行)

to_charでyyyy/mm/dd を実行してみる

sakura=# select to_char(c1, 'yyyy/mm/dd') as c1 from t1;
     c1     
------------
 2012/01/10
 2012/02/20
 2012/03/30
 2012/04/04
 2012/05/05
 2012/06/06
 2012/07/11
 2012/08/21
 2012/09/30
 2012/10/10
 2012/11/20
 2012/12/31
(12 行)

添付ファイル: filesample.sql 1420件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00