【问题标题】:comparing date and time php比较日期和时间php
【发布时间】:2013-02-11 04:37:02
【问题描述】:

我需要比较两个日期,如果一个日期大于另一个日期,则将运行 sql。这是我的代码

date_default_timezone_set('Asia/Kuala_Lumpur');
$date = date('Y-m-d G:i:s');
$query = mysql_query("SELECT * FROM package_transaction");
if(mysql_num_rows($query) > 0) {
    while($row = mysql_fetch_array($query)) {           
        $transac_code = $row['transac_code'];
        $duedate = $row['payment_due'];

        if(strtotime($date) > strtotime($duedate))
        {
            mysql_query("UPDATE package_transaction SET `status` = 'cancelled' WHERE `payment_due` = `$duedate` AND `transac_code` = `$transac_code`");

        }

    }
}

但它不起作用。请帮忙

【问题讨论】:

  • 请不要使用mysql_* 函数,它已被弃用(参见red box)并且容易受到sql注入。使用PDOMySQLi。此外,“它不工作”并没有真正告诉我们很多......代码在哪一行失败?有什么错误?等
  • 那么,有什么问题
  • 您可以随时将付款的到期日存储为 unix 时间戳,然后您可以将所有代码简化为 1 行:UPDATE ... WHERE `payment_due` < $currentTime
  • 我认为问题在于 if 语句。我不知道这是否是比较日期的正确方法。尝试错误报告但没有错误
  • 如果您对取消的订单没有做任何事情,只需运行UPDATE package_transaction SET status` = 'cancelled' WHERE payment_due > now();`

标签: php mysql


【解决方案1】:

试试这个,

 date("Y-m-d", strtotime($date)) >  date("Y-m-d", strtotime($duedate))

【讨论】:

  • 它给我的值是 1。这是什么意思?
  • 这意味着真实。这是一个比较,产生一个布尔结果。
【解决方案2】:

在使用 strtotime 之前,您可以尝试使用日期格式吗

$duedate = $row['payment_due'];
$duedate = $duedate->format('Y-m-d G:i:s');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多