[PHP-users 24631] Re: PostgreSQL から取得した日付データの strtotime() について

SHIRAFU Makoto escvel @ terra.dti.ne.jp
2005年 2月 21日 (月) 16:07:56 JST


こんにちは、しらふです。

Mon, 21 Feb 2005 15:54:18 +0900に
"T.Masuda" <tmasuda @ msg.biglobe.ne.jp> さんから頂いた、
"[PHP-users 24630] PostgreSQL から取得した日付データの strtotime() について"へのお返事です。

> PHP には、日付型、または、日付オブジェクトというものが存在しない
> 様ですので、データベースから取得したデータは「日付文字列」という
> 形でしか取得できない様です。(間違っていたらすみません)
> これが問題をややこしくしているのかなと思えるのですが。。。

私の場合、↓のような感じで、PostgreSQLのDate型、Timestamp型を
UNIX のタイムスタンプに変換して処理したことがあります。
Timestamp型のmssの部分は、DBMSへのデータ挿入時についたりつか
なかったりすることがあったので、適当に処理しています(^_^)
正規表現をちょっと改造すれば、他のRDBMSとの共用もできるのでは
ないかと。

  function pg_date_to_ts($srcPgVal) {
    // 1: year / 2: month / 3:date
    preg_match("/^(\d+)-0?(\d+)-0?(\d+)/", $srcPgVal, $flds) ;
    
    // 
    return mktime(0, 0, 0, $flds[2], $flds[3], $flds[1]);
  }
  
  
  function pg_timestamp_to_ts($srcPgVal) {
    // 1: year / 2: month / 3:date / 4:hour / 5:minute / 6: second
    preg_match("/^(\d+)-0?(\d+)-0?(\d+) 0?(\d+):0?(\d+):0?(\d+)\.?\d*$/", $srcPgVal, $flds) ;
    
    // 
    return mktime($flds[4], $flds[5], $flds[6], $flds[2], $flds[3], $flds[1]);
  }

+--------------------------------------------------------------------+
| From         : SHIRAFU Makoto                                      |
| E-mail       : escvel @ terra.dti.ne.jp                              |
| Web Site     : http://www.terra.dti.ne.jp/~escvel/                 |
| Fingerprint  : D336 5CE0 6D5E 106A 47BF 5FB7 739B B0FE 240B EEB7   |
+--------------------------------------------------------------------+




PHP-users メーリングリストの案内