【问题标题】:adding 30 minutes to datetime php/mysql将 30 分钟添加到 datetime php/mysql
【发布时间】:2010-11-29 00:57:06
【问题描述】:

我在 mysql 中有一个日期时间字段 (endTime)。我使用 gmdate() 来填充这个 endTime 字段。

存储的值类似于 2009-09-17 04:10:48。我想将此结束时间添加 30 分钟并将其与当前时间进行比较。即)允许用户在其结束时间仅 30 分钟内完成某项任务。在他的 endTime 30 分钟后,我不应该让他做任务。

我如何在 php 中做到这一点?

我正在使用 gmdate 来确保没有区域差异。

提前致谢

【问题讨论】:

    标签: php mysql datetime strtotime


    【解决方案1】:

    如果你使用MySQL,你可以这样做:

    SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE;
    


    对于纯 PHP 解决方案,请使用 strtotime

    strtotime('+ 30 minute',$yourdate);
    

    【讨论】:

    • 这是mysql和php的完美解决方案。这应该被标记为答案。
    【解决方案2】:

    试试这个

    DATE_ADD(datefield, INTERVAL 30 MINUTE)
    

    【讨论】:

      【解决方案3】:

      MySQL 有一个名为 ADDTIME 的函数,用于将两次相加 - 因此您可以在 MySQL 中完成所有操作(前提是您使用 >= MySQL 4.1.3)。

      类似的东西(未经测试):

      SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')
      

      【讨论】:

      • 我来这里是为了寻找一种添加到日期时间变量的通用方法,只有这个答案对我有用。
      【解决方案4】:

      Dominc 的想法是对的,但是把计算放在表达式的另一边。

      SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE)
      

      这样做的好处是您只进行一次 30 分钟计算,而不是对每一行进行一次计算。这也意味着 MySQL 可以使用该列上的索引。这两者都可以加快速度。

      【讨论】:

        【解决方案5】:

        使用 DATE_ADD 函数

        DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
        

        【讨论】:

          【解决方案6】:

          通过添加 30 分钟从 MySQL 表中获取日期

          SELECT loginDate, date_add(loginDate,interval 30 minute) as newLoginDate 
          FROM `tableName`;
          

          结果如下所示

          Login Date - 2020-07-22 14:00:00
          New Login Date - 2020-07-22 14:30:00
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-15
            • 2018-01-22
            • 1970-01-01
            • 1970-01-01
            • 2014-06-12
            • 2011-08-11
            • 1970-01-01
            相关资源
            最近更新 更多