#author("2024-07-01T19:25:26+09:00","","") #author("2024-07-01T19:27:08+09:00","","") #navi(../) * 日時情報からYYYYMMDDを取り出す方法 [#xca8fb18] to_char関数を使い、timestamp型に格納された値から日付を取り出し、出力フォーマットを加工する方法を以下に記します。~ 本資料は、参考資料に記した[[PostgreSQLオンラインマニュアル>http://www.postgresql.jp/document/]]の一部を引用および利用しています。 #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 参考資料 [#c1f98f6f] -PostgreSQLのオンラインマニュアル~ http://www.postgresql.jp/document/9.1/html/functions-formatting.html * to_char関数を利用した例 [#c3c3ea01] 以下にto_char関数について記します。 ** to_char関数の書式 [#ha104696] to_char関数の書式は以下のようになります。 to_char(timestamp, text) textの部分が出力書式となります。 ** 出力書式 [#zd28012c] この資料では、実際に使用すると思われる書式のみ抜粋しています。~ 詳細は、上記参考資料の[[PostgreSQLオンラインマニュアル>http://www.postgresql.jp/document/]]で確認してみてください。~ 尚、以下のパターンは英大文字ですが、英小文字でも同様の動作をします。 |''パターン''|''出力''| |''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関数の実行例 [#p4c11831] 以下のようにtimestampデータをinsertしてからto_char関数を確かめています。~ #ref(sample.sql) 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 を実行してみる [#z733a587] 上記SQLで準備したデータを使用しyyyy/mm/dd hh24:mi:ssを試してみます。 sakuradb=> 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 行) sakuradb=> select to_char(c1, 'yyyy/mm/dd hh24:mi:ss') from t1; to_char --------------------- 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となっているのを修正する [#r1155800] as を利用して表示をc1としました。 sakura=# select to_char(c1, 'yyyy/mm/dd hh24:mm:ss') as c1 from t1; c1 sakuradb=> select to_char(c1, 'yyyy/mm/dd hh24:mi: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 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 を実行してみる [#na0a8b4f] 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 行) #htmlinsertpcsp(db-btm.html,db-sp.html)