如何在php mysql中比较日期时间和时间

时间:2013-06-05 00:42:35

标签: php mysql datetime time

只有一个问题:是否可以比较日期时间格式和时间格式?

我有表employee_attendance(日期时间类型)和表employee_schedule(时间类型),这是为了确定员工是否迟到。

请查看我的代码。

$CheckInNew  = strtotime('2013-06-05 08:47:53');
$OnDutyTimeNew   = strtotime('08:00:00');

if($CheckIn > $OnDutyTimeNew){

// confirming that the employee is late

} else {

// confirming that the employee is NOT late

}

有什么想法吗?

谢谢

5 个答案:

答案 0 :(得分:2)

试试这个:

$CheckInNew  = date('B',strtotime('2013-06-05 08:47:53'));
$OnDutyTimeNew   = date('B',strtotime('08:00:00'));

if ($CheckInNew > $OnDutyTimeNew)
    echo 'late!';
else
    echo 'early!';

我使用Internet Swatch时间作为关键字..有关详细信息,请here's the link

<强>更新 PHPFiddle

答案 1 :(得分:0)

为什么不将时间解析为时间戳,然后只使用函数strtotime进行比较()

答案 2 :(得分:0)

您可以在SQL中执行此操作:

-- checkin is the column with their checkin time
-- scheduled is the column with their scheduled time
SELECT
    TIMEDIFF(TIME(checkin), scheduled) AS diff

如果diff为负数,则表示准时。如果是正数,则他们迟到了

<强>参考

答案 3 :(得分:0)

假设您想要与CheckInDateOnly日期的日期进行比较。

您可以通过将日期时间转换为仅日期,并将其添加到OnDutyTime变量来实现此目的。

$checkInDateTime = strtotime('2013-06-05 08:47:53');
$checkInDateOnly = date("Y-m-d", $checkInDateTime);
$OnDutyTimeNewWithSameDateAsCheckIn = strtotime($checkInDateOnly . '08:00:00');

echo ($checkInDateTime > $OnDutyTimeNewWithSameDateAsCheckIn ? "Late" : "Early");

用法示例:PHPFiddle

答案 4 :(得分:0)

由于日期格式包含前导零,因此您只需使用纯字符串比较来比较日期。

$checkInDateTime  = '2013-06-05 08:47:53';
$dutyTime = '08:00:00';

if (substr($checkInDateTime, -8) > $dutyTime) {
    echo "Late";
} else {
    echo "Early";
}

通常,一天分为1,440分钟。 Swatch Internet time将一天划分为1000天。因此1拍= 1.44分钟。使用Swatch Internet time来比较正常时间是不准确的,因为它不包括秒并且存在微小错误(至少这是我所相信的)。