Pages

2010年3月5日金曜日

PHP Zend_DbでSQL Serverを利用した時にDATETIME型の値がちゃんと取得できない。。。

Zend_Dbと言っても中身はPDOであって、PDO_MSSQLを利用する事となる。

テーブルの型にDATETIMEを利用すると、何故か下記のような変な値で取得してしまう。。。

05 16 2007 11:49AM

これはODBCを利用するとならないようで、どうやらPDO_MSSQLの問題のようです。
でもZend_DbにはPDO_ODBCのアダプタは標準では入ってはいないので、自作するか。。。
とはななかなかならないので、頑張ってこれくらい対応しようかと。。。

最初変換する関数を作ってたのですが、どうやら環境によっては「05 16 2007 11:49午前」と日本語が入ってしまう事があるようでして。。。

やっぱりDB側で何とかするしかないなって事で調べるとどうやらSQL ServerにはCONVERTという関数が用意されているようでそれを利用すれば対応可能でした。
毎回SQL文がうっとうしいですが。。。

$stmt = $db->query("SELECT *,CONVERT(VARCHAR , ins_date ,120) as ins_date FROM hogehoge");
$data = $stmt->fetch();

▼参考サイト
http://www.ilovex.co.jp/Division/SRD/archives/2007/08/convert.html

0 件のコメント:

コメントを投稿

Followers