MYSQL datetime空时,strtotime("0000-00-00 00:00:00") 本地和服务器端输出不一样

问题很简单,想要判断datetime是否空:

if(empty(strtotime("0000-00-00 00:00:00"))){
   echo "a";
}else{
  echo "b";
}

在本地是没什么问题的,放到服务器端时出错。然后网上搜索问题所在,都说empty用错了,empty函数只能用于检查变量,example:

错误:

empty(trim($s))

正确:

empty($s)

于是我就改成:

$s = strtotime("0000-00-00 00:00:00");
empty($s)

还是错误。

然后检测服务器端的输出:strtotime("0000-00-00 00:00:00"),竟然和本地不一样,本地时0,服务器端是负值:-62170012800

最后发现原来strtotime("0000-00-00 00:00:00")在32bit和64bit的php环境中返回值是不同的,分别返回0和负值时间戳。

代码改成这样就可以了:

if(strtotime("0000-00-00 00:00:00")<=0){
   echo "a";
}else{
  echo "b";
}

完美!