#navi(../)
* PHPで文字列日時を整形する方法 [#d63796ec]
本資料は、PostgreSQLからtimestamp型の日時文字列を取得した時、秒以下の値を含む文字列が返却されました。
PostgreSQLの日付時刻関連の関数を使用しSQLで対処できますが、本記事ではPHPで対処する場合の資料です。

#contents
#htmlinsertpcsp(web-top.html,web-sp.html)

* 文字列日時を整形する [#o4eb1be3]
PostgreSQLのtimestamp型で処理したとき、以下のように秒以下の値が返却されました。

 sakura=# select date from t1;
             date            
 ----------------------------
  2012-05-17 13:26:16.209357
 (1 行)

以下のように日付時刻関連の関数である、date_truncを利用すればよいのですが、この記事ではPHPで対処することにしました。
 sakura=# select date_trunc('second',date) from t1;
      date_trunc      
 ---------------------
  2012-05-17 13:26:16
 (1 行)

** PHPスクリプトによる文字列操作 [#t4407092]
文字列日時をPHPの日付時刻関連の関数をつかって操作できますが、本資料では、vsprintfとsscanfを利用して実現しまいた。~
サンプルソースは以下の通りです。
#ref(dateconv.php)
 <?php
   $in="2012-05-17 13:26:16.209357";
   $out=vsprintf("%d-%02d-%02d %02d:%02d:%02d", sscanf($in, "%d-%d-%d %d:%d:%d"));
   echo $out;
 ?>
$inには秒以下の値を含む日時文字列です。~
vsprintf, sscanfを使用しフォーマットを整形し$outに格納しています。

実際の動作は以下の通りです。~
コマンドラインから本スクリプトを動かした結果です。
 $ php dateconv.php 
 2012-05-17 13:26:16

以上、文字列日時のフォーマット整形について記述しました。

#htmlinsertpcsp(web-btm.html,web-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS