检查mySql日期时间是否早于php现在的1天()

时间:2010-06-19 13:45:58

标签: php mysql datetime

我有从MySQL返回的记录,它有一个datetime字段。我想要做的是取这个值,看看它是否比24小时更早,我假设使用PHP的time()来获取当前时间。

如果我回应他们,我得到:

 1276954824            this is php's time()
 2010-06-19 09:39:23   this is the MySQL datetime

我认为最重要的是unix时间?一直在玩strtotime但没有太大的成功..

欢迎帮助!

4 个答案:

答案 0 :(得分:27)

没有成功?

echo strtotime("2010-06-19 09:39:23");

给了我

1276940363

mktime(9, 39, 23, 6, 19, 2010)给出相同的时间,因此解析工作正常)


要获得以秒为单位的差异,您可以减去时间戳,例如

$diff = time() - strtotime("2010-06-19 09:39:23");

如果差异大于86400(60 * 60 * 24)秒,那么时间戳相隔超过一天:

if(time() - strtotime("2010-06-19 09:39:23") > 60*60*24) {
   // timestamp is older than one day
}

答案 1 :(得分:9)

你也可以这样做:

SELECT * FROM my_table WHERE timestamp < NOW() - INTERVAL 1 DAY;

答案 2 :(得分:3)

为什么要混合PHP时间和MySQL时间?

相反,直接在MySQL中进行比较:

要在MySQL中获取当前日期/时间,请使用NOW()函数。例如,您可以比较2010-06-19 09:39:23' < DATE_SUB(NOW(), INTERVAL 1 DAY)

这将检查给定日期(可能在一列中)是否超过24小时。

如果绝对有必要将MySQL时间戳转换为UNIX时间戳,则可以使用MySQL的UNIX_TIMESTAMP()函数来执行此操作。

答案 3 :(得分:0)

我编写了一个函数,通过该函数可以确定第一个给定日期是一天还是 n 天大于或小于第二个给定日期。

$date1 = "2013/03/01";
$date2 = "2013/03/01";
$sign  = "-";
$diff  = 1;
$result = isDaysSmallerBigger($date1, $date2, $sign, $diff);
var_dump($result);

/**
 * Note: this function is only supported in php 5.3 or above
 * 1. If $date1 - $date2 = $sign $diff days, return true;
 * 2. If $date1 equals $date2 and $diff euqals 0, whether $sign is "+" or "-", return true
 * 3. Else return false; 
 * @param unknown_type $date1
 * @param unknown_type $date2
 * @param string $sign: "-": $date1 < $date2; "+": $date1 > $date2; 
 * Besides if $diff is 0, then both "-" and "+" means $date1 === $date2;
 * @param integer $diff: date difference between two given dates
 */
function isDaysSmallerBigger($date1, $date2, $sign, $diff) {
    $dateTime1 = new DateTime($date1);
    $dateTime2 = new DateTime($date2);

    $interval = $dateTime2->diff($dateTime1);
    $dayDiff  = $interval->format('%a');
    $diffSign = $interval->format('%R'); 

    if((int)$dayDiff === (int)$diff) {
        // Correct date difference

        if((int)$diff !== 0) {
          // Day difference is not 0
          if($diffSign === $sign) {
            return true;
          } else {
            return false;
          }
        } else if((int)$diff === 0) {
          // Day difference is 0, then both given "+" and "-" return true
          return true;
        } 
    } else {
        // Incorrect date difference
        return false;   
    }   
}