首页 > 数据库 >数据库同表时间间隔差

数据库同表时间间隔差

时间:2023-10-24 13:55:07浏览次数:36  
标签:updateTime 数据库 t2 同表 id t1 间隔 SELECT id1

背景

在统计效率的场景中有发现需要使用到两条数据之间的时间隔,然后所用使用的字段是一致的,所以就需要使用第一条数据的更新时间去与第二条的更新时间做时间差的求值,然后进行显示

思路

  1. 将表进行时间倒序然后构成一组新的数据(此时只需要进行有用字段的构造),我以上场景只需要时间,所以我就构造时间与id的临时表代码如下
    SELECT   
        (@id := @id + 1) AS id,  
        updateTime as "endtime"  
    FROM   
        (SELECT updateTime from patientimages ORDER BY updateTime desc) AS f
  2. 将以上数据构造出开始时间与结束时间,然后开始时间与结束时间的规律是前一条数据的结束时间是第二条数据的结束时间,所以需要错一位构造开始时间,代码如下:
    SET @id := 0;  
    SET @id1 := -1;  
      
    SELECT t1.id, t1.endtime, t2.id as id2,  t2.startime
    FROM (
    SELECT   
        (@id := @id + 1) AS id,  
        updateTime as "endtime"  
    FROM   
        (SELECT updateTime from patientimages ORDER BY updateTime desc) AS f ) as t1
    LEFT JOIN(
    SELECT   
        (@id1 := @id1 + 1) AS id,  
        updateTime as "startime"  
    FROM   
        (SELECT updateTime from patientimages ORDER BY updateTime desc) as f1) as t2 on t1.id = t2.id
  3. 对数据进行时间差的求值,并按照需求进行展示此处需要用到时间函数,TIMEDIFF(),否则会是数学的十进制进行计算的,具体代码如下
    SET @id := 0;  
    SET @id1 := -1;  
      
    SELECT t1.id, t1.endtime,  t2.startime, TIMEDIFF(t1.endtime, t2.startime) as timediff 
    FROM (
    SELECT   
        (@id := @id + 1) AS id,  
        updateTime as "endtime"  
    FROM   
        (SELECT updateTime from patientimages ORDER BY updateTime desc) AS f ) as t1
    LEFT JOIN(
    SELECT   
        (@id1 := @id1 + 1) AS id,  
        updateTime as "startime"  
    FROM   
        (SELECT updateTime from patientimages ORDER BY updateTime desc) as f1) as t2 on t1.id = t2.id
  4. 以上代码成果展示如下:

  以上仅作记录  

标签:updateTime,数据库,t2,同表,id,t1,间隔,SELECT,id1
From: https://www.cnblogs.com/lovekt/p/17784637.html

相关文章

  • 华为云耀云服务器L实例 - 使用navicat管理数据库
     Navicat是一款功能强大的数据库管理工具,可用于管理多种数据库系统,如MySQL、PostgreSQL、Oracle、SQL Server等。它提供了直观的用户界面和丰富的功能,使得开发者和数据库管理员能够轻松地进行数据库设计、查询、维护和管理。Navicat的一些主要优势包括:1. 多数据库支持:Nav......
  • oracle-数据库备份
    热备份数据库备份就是将数据库的内容全部复制出来保存到计算机的另一个位置或者其他存储设备上。数据库备份分为物理备份和逻辑备份。使用export/import的方式对数据进行导入导出操作。冷备份脱机备份称为冷备份,使用管理员身份的用户使用shutdown命令关闭数据库的服务,之后复......
  • php连接mysql数据库
    phpmyadmin首先在phpmyadmin新建一个数据库mydb,在此数据库下新建表users。然后在插入里输入以下内容:现在在浏览界面,就成这样了:后端记得打开phpstudy的mysql服务,否则会报错login.html:登录界面。当用户点击submit就会跳转到login.php进行查询。<head><metacharse......
  • laravel:多mysql数据库(10.27.0 )
    一,相关文档https://learnku.com/docs/laravel/10.x/database/14882#2cd405二,php代码1,编辑.envDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=gonewsDB_USERNAME=yourusernameDB_PASSWORD=yourpasswordCO_DB_CONNECTION=mysqlCO_DB_HOST=127.0.0.1......
  • 华为云服务器+使用本地navcat管理数据库
     在开发中,我们需要用数据相关管理软件,来本地管理华为云耀云服务器L实例服务器上的数据库,Navicat 是一款功能强大的数据库管理工具,它具有许多优点,可以帮助数据库管理员和开发人员更轻松地管理数据库。以下是使用 Navicat 软件管理数据库的一些好处:1. 多数据库支持:Navicat......
  • openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立
    openGauss学习笔记-107openGauss数据库管理-管理用户及权限-三权分立默认权限机制和管理员两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的......
  • oracle数据库启停
    使用oracle登录//停止1.ps-ef|grepsmon2.exportORACLE_SID=cbsdba(这是实例名字)3.sqlplus/assysdba 4.shutdown immediate;//启动1.ps-ef|grepsmon2.exportORACLE_SID=cbsdba3.sqlplus/assysdba 4.startup;5.alter pluggabledatabaseallopen;......
  • 怎样将SQL Server数据库迁移到新服务器
    一、在老的服务器上打开SQLServerManagementStudio,输入数据库用户名和密码后登录数据库。二、打开对象资源管理器,打开数据库找到需要迁移的数据库,比如这里的test数据库。三、选中需要迁移的数据库,右键点击数据,打开数据库属性,点击文件,查看并记录数据库的路径,然后关......
  • 数据库基本命令
    1.对库的增删改查1.增加一个库creatrdatabasedb1;#后面是库的名字showdatabases;#查看所有库showcreatrdatabasedb1;#查看库的结构alterdatabasedb1charset='utf8';#修改字符编码dropdatabasedb1;#删除一个库usedb1......
  • sqlserver 服务器主体 无法在当前安全上下文下访问数据库
    SELECTname,database_id,is_trustworthy_onFROMsys.databasesALTERDATABASEbole_dataSETTRUSTWORTHYONALTERAUTHORIZATIONONDATABASE::bole_dataTObole 今天使用sqlserver,发现了一个问题,就是使用insertinto数据库名.dbo.表名(字段)values(值)这样语句的......