在PHP中比较MySQL日期字符串格式是否正确?

时间:2014-10-22 08:39:00

标签: php mysql date

我一直在比较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日期的正确方法吗?

1 个答案:

答案 0 :(得分:4)

'2007-12-12 10:00:00' > '2006-12-12 10:00:01'在词汇上比较两个字符串。如果两个字符串具有相同的格式(即完全相同的点中的数字和连字符或冒号),并且如果元素的顺序最重要到最不重要(即年份,则此顺便恰好可以正常工作月,日,小时,分钟,秒。)

所以, jein 。这不是不正确的,因为它确实有效,但事实确实有效或多或少是偶然的。它看起来像一个易于破解的脆弱解决方案,同时使用strtotime显式解析日期并且比较显式时间戳值更不易碎。 (请注意,strtotime也取决于字符串是某种已知格式,但它不会神奇地解析任何和所有值。)