【问题标题】:MySQL date comparison from PHP来自 PHP 的 MySQL 日期比较
【发布时间】:2013-10-09 22:41:32
【问题描述】:

非常感谢您的帮助。

我有一个包含日期时间字段的 mysql 数据库。在那个领域我有一个特定的日期和时间, 例如:

2013-10-03 22:28

然后我有一个 PHP 脚本,它从 $_GET 命令获取特定的日期和时间,值分别为:年、月、日、小时、分钟。

从这个 GET 我创建了一个日期如下:

$datum = $year."-".$month."-".$day." ".$hour.":".$minute.":".$seconds;
$date = date('Y-m-d H:i',strtotime($datum));

我现在需要做的是以某种方式将我创建的这个新日期与数据库中的最后一个日期值(最近的)进行比较。关键是,在我比较这个之后,我想检查数据库中的最后一个值是否早于 5 分钟,然后才执行特定操作(插入新行),以及数据库中的最后一个日期是否比 5 分钟新,什么都不做。

【问题讨论】:

  • WHERE + DATE_SUB + >
  • 比较是在DB端还是PHP端?您使用的是哪个版本的 PHP?

标签: php mysql datetime


【解决方案1】:

使用“select max(datetime_field) from tblname”获取日期时间字段的最新值。

【讨论】:

    【解决方案2】:
    $now = new DateTime();
    $dateFromDB = new DateTime($someValueFromYourDataBase);
    
    // subtract 5 minutes from now and compare with the stored timestamp
    if ($now->sub(new DateInterval('PT5i') > $dateFromDB) {
        // database timestamp is older - do something
    }
    

    【讨论】:

      【解决方案3】:

      你可以像这样使用 SQL:

      select count(*) from `table` where `datefield` >= '$date'
      

      $date 可以这样计算

       $date = date('Y-m-d H:i', strtotime($datum) - 5*60);
      

      5*60 - 5 分钟

      出于性能原因,我建议您将索引添加到 datefield 并更改选择如下:

      select `datefield` from `table` where `datefield` >= '$date' limit 1
      

      【讨论】:

        猜你喜欢
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-18
        • 2014-08-03
        • 2013-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多