PHPの日付の比較って文字列のままできるんだね…


MySQLとPHPでゴリゴリしていた時のことなんです。
MySQLから日付型を取得して比較するときにstrtotime()でUnixタイムスタンプに変換していたのですが
急いでいてそのまま”2009-12-01″の様な文字列でそのまま比較しちゃったんですけど
ちゃんと動いているみたいなのでちょっと調べてみた。

<?php
//PHP 5.2.11

//YYYY-mm-dd MySQL DateType
var_dump("2009-12-25" > "2009-12-24");  //bool(true)
var_dump("2009-12-25" > "2009-12-25");  //bool(false)
var_dump("2009-12-25" > "2009-12-26"); //bool(false)

//YYYY-mm-dd MySQL DatetimeType
var_dump("2009-12-25 13:25:30" > "2009-12-25 13:25:29"); //bool(true) 
var_dump("2009-12-25 13:25:30" > "2009-12-25 13:25:30"); //bool(false)  
var_dump("2009-12-25 13:25:30" > "2009-12-25 13:25:31"); //bool(false) 

//ISO 8601
var_dump("2009-12-20T10:00:00Z" > "2009-12-20T09:59:59Z"); //bool(true)
var_dump("2009-12-20T10:00:00Z" > "2009-12-20T10:00:01Z"); //bool(false) 
var_dump("2009-12-20T10:00:00+09:00" > "2009-12-20T09:59:59+09:00"); //bool(true)

var_dump((int)"2009-12-25"); //int(2009) 
?>

おおお?・・・おおお!動いてる。
でも、Unixタイムスタンプに変換する時はちゃんとstrtotime()使いましょうw
うーん、この挙動ってマニュアルに書いてあるのかなぁ・・?

関連記事:

  1. Javascript(jQuery) で オブジェクトとかタグの存在を確認する
  2. CentOS5でPHP5.2.10をインストール
  3. PHP ctype_digitの変な挙動
  4. Javascript, Object.prototypeについて調べたのでメモメモ
  5. MantisBTとSubversionを連携させてみた。

Comments are closed.