我一直在比较php中的mysql日期:
<?php
strtotime('2007-12-12 10:00:01') > strtotime('2007-12-12 10:00:00')
我刚刚发现如果你直接在php中比较2个日期(格式Y-m-d H:i:s
),结果似乎没问题。我搜索了google for this,但未找到任何结果。
示例1:
<?php
var_dump('2006-12-12 10:00:00' > '2006-12-12 10:00:00');
var_dump('2006-12-12 10:00:00' >= '2006-12-12 10:00:00');
var_dump('2006-12-12 10:00:00' <= '2006-12-12 10:00:00');
var_dump('2006-12-12 10:00:00' < '2006-12-12 10:00:00');
结果1:
bool(false)
bool(true)
bool(true)
bool(false)
示例2:
<?php
var_dump('2007-12-12 10:00:00' > '2006-12-12 10:00:01');
var_dump('2007-12-12 10:00:00' >= '2006-12-12 10:00:01');
var_dump('2007-12-12 10:00:00' <= '2006-12-12 10:00:01');
var_dump('2007-12-12 10:00:00' < '2006-12-12 10:00:01');
结果2:
bool(true)
bool(true)
bool(false)
bool(false)
看来php正确地比较了两个mysql日期。 这是a
在php中比较mysql日期的正确方法吗?
答案 0 :(得分:4)
'2007-12-12 10:00:00' > '2006-12-12 10:00:01'
在词汇上比较两个字符串。如果两个字符串具有相同的格式(即完全相同的点中的数字和连字符或冒号),并且如果元素的顺序最重要到最不重要(即年份,则此顺便恰好可以正常工作月,日,小时,分钟,秒。)
所以, jein 。这不是不正确的,因为它确实有效,但事实确实有效或多或少是偶然的。它看起来像一个易于破解的脆弱解决方案,同时使用strtotime
显式解析日期并且比较显式时间戳值更不易碎。 (请注意,strtotime
也取决于字符串是某种已知格式,但它不会神奇地解析任何和所有值。)