【问题标题】:MYSQL get diffrence between two dattimes in minutes and update in fieldMYSQL 以分钟为单位获取两个日期时间之间的差异并在字段中更新
【发布时间】:2016-11-07 07:47:22
【问题描述】:

我有 3 个文件的表格 idstartdateenddate。现在我添加了名为mins 的新字段,如图所示。

我需要查询以在几分钟内获得 startdateenddate 之间的差异并存储在字段 mysql 中。

【问题讨论】:

标签: mysql sql phpmyadmin


【解决方案1】:

使用 MySQL TIMESTAMPDIFF()

UPDATE YourTable t 
set t.mins =  ABS(TIMESTAMPDIFF(MINUTE,t.startdate,t.enddate)) ;

【讨论】:

  • 当差异不合适时,它会将值存储为负数
  • @MasterDev 已更新。
【解决方案2】:

鉴于您稍后添加了分钟列,您应该使用以下查询更新您的表。

 INSERT INTO yourTable 
    SELECT 
      inn.id,
      inn.StartDate,
      inn.EndDate,
      TIMESTAMPDIFF(
        MINUTE,
        inn.StartDate,
        inn.EndDate
      ) AS diff 
    FROM
      `yourTable` inn 
      ON DUPLICATE KEY 
      UPDATE 
        id = inn.id,
        `StartDate` = inn.StartDate,
        EndDate = inn.EndDate,
        Mins = TIMESTAMPDIFF(
          MINUTE,
          inn.StartDate,
          inn.EndDate
        ) ;

假设这是你的表的初始状态

  id  StartDate            EndDate                Mins  
------  -------------------  -------------------  --------
     1  2016-11-07 12:53:27  2016-11-30 12:53:35         0
     2  2016-11-02 12:53:41  2016-12-07 12:53:45         0
     3  2016-11-16 12:53:52  2017-02-16 12:53:56         0

执行上述查询会像这样转换表:

    id  StartDate            EndDate                Mins  
------  -------------------  -------------------  --------
     1  2016-11-07 12:53:27  2016-11-30 12:53:35     33120
     2  2016-11-02 12:53:41  2016-12-07 12:53:45     50400
     3  2016-11-16 12:53:52  2017-02-16 12:53:56    132480

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 2013-05-14
    • 2021-01-04
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多