にゃあ

datetimeのnullの扱いがPHPのバージョンで微妙に違う?

MySQLで日付情報を持つ方法のひとつとして、データ型をdatetimeにする方法があります。これにすると、"2008-10-08 12:00:00"のような形で保存されるので、単にタイムスタンプをそのまま保存するより見やすいわけで、自分は好んで使っています。注意しなければならないのがdatetime型はnull値が"0000-00-00 00:00:00"となる点です。

意外とこの仕様がPHPで扱う上でくせ者です。datetime型はPHPでは文字列型として扱われるので、汎用性を持たせるにはstrtotime()などを使って、いったんタイムスタンプに変換する必要があります。

<?php
$timeStamp = strtotime($datetime);
?>

ところが、このstrtotime()の挙動がPHPのバージョンによって微妙に異なるようです。

<?php
var_dump(strtotime('0000-00-00 00:00:00'));
var_dump(date('Y-m-d H:i:s', strtotime('0000-00-00 00:00:00')));
?>

上のコードを異なるバージョンのPHPで試してみました。

5.1.6の実行結果:
int(943887600) 
string(19) "1999-11-30 00:00:00"

5.2.6の実行結果:
bool(false)
string(19) "1970-01-01 09:00:00"

結果はご覧のとおりです。この手の仕様はちょっと困りものです。とりあえずの対策は、文字列が'0000-00-00 00:00:00'のとき分岐するような処理を追加するくらいでしょうか。


コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/101

コメントを書く

お名前* URL
本文*
合い言葉* ←「wheraksou」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

コメントはないです。誰かコメント書いてよぅ…。

このブログの著者


Suinと申します。

@suin on Twitter

サブメニュー

最近気になるモノ!

WindowsからMacに乗り換えて半年ですが、Macは細かいところまで丁寧に作られていて、親切なユーザーインターフェイスが気に入ってます。iMacはMagic Mouseと洗練されたデザインのBluetoothキーボードがついてくるので、お得だなあ、なんて思ってます。私に買ってもいいという方、いたら教えてください 笑。

最近のエントリ

XOOPS Cube Dev Ring

最近のコメント

最近のトラックバック

ひとりで喜ぶログ
デュラララに登場するチャットを再現した (04/09)
ひとりで喜ぶログ
デュラララに登場するチャットを再現した (03/28)
http://www15.atpages.jp/~classicalstudio/wordpress/?p=50
getcwd()とdirname(__FILE__)は違う結果になるときがある (12/22)
Re:
CSSのtext-align:center;は<div>には通用しない (12/15)
XOOPS専門-株式会社RYUS - d3blog
Shiori 1.02 (12/02)
9deMaio.com - blog
Koins 1.00 (11/11)
インターネット覚え書き「ビボウログ」
CSSのtext-align:center;は<div>には通用しない (09/16)
hinoeuma1966
CSSのtext-align:center;は<div>には通用しない (07/03)
Suin.org
ブログ作ってみた (03/23)
Suin.org
ブログ作ってみた (03/23)