选择两个日期时间之间不同的所有数据

时间:2017-01-09 04:32:51

标签: mysql datetime between

我有一个mysql表,其数据连接到日期和时间。每行都有数据和日期,如下所示:

datetime               name
2009-06-25 10:00:00    jhon
2009-06-25 10:00:05    jack
2009-06-25 10:00:11    json
2009-06-25 10:00:15    jack

我的问题是我需要像第二个date1和date2那样得到不同的行:

datetime               name     second
2009-06-25 10:00:00    jhon     0
2009-06-25 10:00:05    jack     5
2009-06-25 10:00:11    json     6
2009-06-25 10:00:15    jack     4

谢谢

3 个答案:

答案 0 :(得分:1)

您正在寻找的功能是LAG,它在许多数据库中都可用作分析函数,但不在MySQL中。但是,您可以使用会话变量来模拟此功能。

SET @dt = (SELECT MIN(UNIX_TIMESTAMP(datetime)) FROM yourTable);

SELECT t.datetime,
       t.name,
       t.curr_dt - t.lag_dt AS second
FROM
(
    SELECT @dt:=UNIX_TIMESTAMP(datetime) curr_dt,
           @dt lag_dt,
           datetime,
           name
    FROM yourTable
    ORDER BY datetime, name
) t

答案 1 :(得分:1)

您可以找到最近的日期并找到如下所示的差异

select 
    datetime,
    name,
    TIME_TO_SEC(TIMEDIFF(datetime, prev_date)) diff
    FROM
    (
        SELECT 
        datetime,
        name,
        (select datetime from tbl t1 where t1.datetime<tbl.datetime order by  datetime desc limit 1) as prev_date
        FROM 
        `tbl`
      )tmp

答案 2 :(得分:0)

结果是:

[SQL] SET @dt =(SELECT MIN UNIX_TIMESTAMP(datetime)FROM gps_trs_location); [错误] 1064 - 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在&#39;(datetime)FROM gps_trs_location附近使用正确的语法)&#39;在第1行