AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[time](dba)

Martin Hope
ERJAN
Asked: 2020-07-15 14:46:06 +0800 CST

如何从 PostgreSQL 表中获取不重叠的不同间隔?

  • 8

使用 PostgreSQL 9.6。

该表有用户会话,我需要打印不同的非重叠会话。

CREATE TABLE SESSIONS(
            id serial NOT NULL PRIMARY KEY, 
            ctn INT NOT NULL, 
            day DATE NOT NULL,
            f_time TIME(0) NOT NULL,
            l_time TIME(0) NOT  NULL
        );     
    INSERT INTO SESSIONS(id, ctn, day, f_time, l_time)
    VALUES
    (1, 707, '2019-06-18', '10:48:25', '10:56:17'),
    (2, 707, '2019-06-18', '10:48:33', '10:56:17'),
    (3, 707, '2019-06-18', '10:53:17', '11:00:49'),
    (4, 707, '2019-06-18', '10:54:31', '10:57:37'),
    (5, 707, '2019-06-18', '11:03:59', '11:10:39'),
    (6, 707, '2019-06-18', '11:04:41', '11:08:02'),
    (7, 707, '2019-06-18', '11:11:04', '11:19:39');

sql小提琴

id  ctn day         f_time      l_time
1   707 2019-06-18  10:48:25    10:56:17
2   707 2019-06-18  10:48:33    10:56:17
3   707 2019-06-18  10:53:17    11:00:49
4   707 2019-06-18  10:54:31    10:57:37
5   707 2019-06-18  11:03:59    11:10:39
6   707 2019-06-18  11:04:41    11:08:02
7   707 2019-06-18  11:11:04    11:19:39

现在我需要不同的非重叠用户会话,所以它应该给我:

1.  start_time: 10:48:25  end_time: 11:00:49  duration: 12min,24 sec
2.  start_time: 11:03:59  end_time: 11:10:39  duration: 6min,40 sec
3.  start_time: 11:11:04  end_time: 11:19:39  duration: 8min,35 sec
postgresql-9.6 time
  • 2 个回答
  • 1981 Views
Martin Hope
edo
Asked: 2019-08-09 05:12:48 +0800 CST

将值与 5 分钟间隔对齐

  • 1

我在表中插入了随机间隔的值。我想在(比如说)5 分钟间隔内获取第一个(如果存在)值。因此需要有 5 分钟列,并且值列应表示下一个 5 分钟范围之前的第一个可能值。使用聚合函数可以获得最小值、最大值、平均值......这里不是这种情况。我需要范围内的第一个可能值。

Id  TSDest                  Value
1   2019-02-18 08:31:00.000 3472
2   2019-02-18 08:35:00.000 3471
3   2019-02-18 08:39:00.000 3464
4   2019-02-18 08:43:00.000 3462
5   2019-02-18 08:47:00.000 3456
6   2019-02-18 08:51:00.000 3455
7   2019-02-18 08:55:00.000 3463
8   2019-02-18 08:59:00.000 3466
9   2019-02-18 09:04:00.000 3166

我需要将值与恒定的时间间隔对齐,例如 5 分钟(一个附加功能是获取范围内最近的时间戳值)。

Id  TSDest                  Value
1   2019-02-18 08:30:00.000 3472
2   2019-02-18 08:35:00.000 3471

4   2019-02-18 08:40:00.000 3462
5   2019-02-18 08:45:00.000 3456
6   2019-02-18 08:50:00.000 3455
7   2019-02-18 08:55:00.000 3463

9   2019-02-18 09:00:00.000 3166

帮助表示赞赏,

sql-server time
  • 1 个回答
  • 570 Views
Martin Hope
apex
Asked: 2017-07-22 05:28:41 +0800 CST

如何添加索引提高mysql语句速度

  • 0

如何提高这个 mysql 语句的速度?花了 1.10 秒,但想知道是否可以让它更快。

SELECT 
        res_rooms.room_id AS room,
        res_rooms.type AS room_type,
        res_rooms.status AS room_status,
        IFNULL(utilizations.user_id, - 1) AS user_id,
        CONCAT_WS(0, system_users.surname, camps.s_surname) AS surname,
        CONCAT_WS(0, system_users.name, camps.s_first) AS name,
        IFNULL(utilizations.start_date, NULL) AS start_date,
        IFNULL(utilizations.end_date, NULL) AS end_date,
        utilizations.keys_issued AS keys_issued,
        utilizations.resource_type AS resource_type,
        utilizations.staff_id AS staff_id,
        CONCAT_WS(0, students.handled_by, camps.handled_by) AS handled_by,
        CONCAT_WS(0,
                students.date_of_birth,
                camps.date_of_birth) AS dob,
        CONCAT_WS(0, students.gender, camps.sex) AS gender,
        CONCAT_WS(0, students.status, camps.status) AS status,
        countries.common_name AS citizenship,
        CONCAT_WS(0, students.applying_for, camps.applying) AS applying_for,
        IFNULL(fee_schedule.ResiLife_type, 'N/A') AS residence_type,
        IFNULL(fee_schedule.Resi_Amount, 'N/A') AS reslife_amount
    FROM
        res_rooms
            LEFT JOIN
        utilizations ON utilizations.resource_id = res_rooms.room_id
            LEFT JOIN
        system_users ON system_users.user_id = utilizations.user_id
            LEFT JOIN
        camps ON camps.camp_id = utilizations.user_id
            LEFT JOIN
        students ON students.user_id = utilizations.user_id
            LEFT JOIN
        countries ON (students.citizenship = countries.code
            || camps.citizenship = countries.code)
            LEFT JOIN
        fee_schedule ON utilizations.user_id = fee_schedule.Stud_id
    WHERE
        (students.status = 'B'
            OR students.status = 'VC')
            AND utilizations.start_date <= CURDATE()
    ORDER BY room_id , start_date DESC

使用时Explain:

在此处输入图像描述

查询统计:

在此处输入图像描述

mysql time
  • 2 个回答
  • 210 Views
Martin Hope
HeadsR'Us
Asked: 2017-04-13 03:50:34 +0800 CST

使用数据库查询的比赛结果的位置?

  • 2

该场景基于比赛项目(跑步/慢跑)

有没有办法通过使用他们的比赛结果来获得一个人的位置。例如,完成比赛最快的人将在单独的比赛位置表中,其值为 1。第二快的人将获得 2 的结果,依此类推。只需使用该人的比赛结果(数据类型 - 时间)。

mysql time
  • 1 个回答
  • 503 Views
Martin Hope
beldaz
Asked: 2016-10-21 15:11:02 +0800 CST

PostgreSQL 区间划分

  • 6

这已经出现过几次,例如,在postgresql 新闻组和wiki中。一般来说,不同intervals 之间的关系可能没有很好地定义 - 一个月可以是不同的天数,具体取决于正在考虑的月份(和年份)。但有时需要计算两个时间点之间发生了多少间隔,例如(简化示例):

CREATE TABLE recordings(tstart timestamp, tend timestamp, interval ticklength);

SELECT (tend - tstart) / ticklength AS numticks
FROM recordings;

这在 PostgreSQL 中是不允许的,因为它是两个间隔之间的划分,由于上述原因,它没有明确定义的一般行为。当间隔可以转换为秒时,存在一种解决方法,但是如果不是这种情况,例如,当间隔为毫秒级时,最好的方法是什么?

postgresql time
  • 4 个回答
  • 5518 Views
Martin Hope
CodeAllDay
Asked: 2015-11-02 08:31:19 +0800 CST

查询执行需要时间?

  • 0

我是使用数据库的新手,一般不了解它们的容量。具体来说,我想知道一个特定的 mysql 查询需要多少时间。我尝试在 Internet 上搜索,但我无法在任何地方找到估算值,也没有找到估算值的方法。

所以我的问题是,是否有 900k 行在表中按升序包含 id(从 100 000 到 900 000 的数字)。搜索具有特定 ID 的行需要多长时间?

我想如果我问一个在这种规模的数据库上工作过的人,这个人就会知道这个估计。

mysql time
  • 1 个回答
  • 66 Views
Martin Hope
MarinD
Asked: 2015-06-30 06:35:19 +0800 CST

使用具有时间单位的持续时间字符串排序

  • 1

我有一个带有表“Rate”的 SQLite 数据库,其中有一列“timeToMaturity”。此列包含以下字符串:

  • 7个月
  • 26天
  • 3年

我想按 timeToMaturity(即 26Days < 7Months < 3Years)对查询结果进行排序。但是,因为它们是字符串,所以我不知道应该如何进行。

谢谢您的帮助

sqlite time
  • 1 个回答
  • 59 Views
Martin Hope
Timon
Asked: 2015-05-13 08:29:57 +0800 CST

具有时间类型的一张表上的 MySQL 交集

  • 3

我有一个包含 4 列的表:id (int)、name (varchar)、timefrom (time)、timeuntil (time)

现在我想要所有的组合,它们在 timefrom 到 timeuntil 上有一个交集。

我目前的解决方案是我加载所有记录并在 php 中循环它每整整一个小时......但这会花费我很多性能。

任何想法,这有可能在选择中解决吗?

我想知道哪些存在共享相同的 timefrom, timeuntil 例如:

#1 / whole day / 06:00:00 / 18:00:00 
#2 / morning   / 07:00:00 / 12:00:00 
#3 / afternoon / 13:00:00 / 18:00:00 

我想得到结果:

#1, #2, #3   (the whole day shares the times with morning, afternoon) 
#2, #1       (the morning shares the times with the whole day) 
#3, #1       (the afternoon shares the times with the whole day)
mysql time
  • 1 个回答
  • 306 Views
Martin Hope
Yousef
Asked: 2014-06-22 22:31:52 +0800 CST

经过时间计算

  • 1

我需要计算每个用户在交易中执行他的部分所用的时间。

顺序是:0 -1 - B2 或 0-B3 该表如下所示:

+--------+--------+-------------------+------------------+-----------+
| id     | Trtype |Internal Status    | Timestamp        | User Name |
+--------+--------+-------------------+------------------+-----------+
|2072499 | BSE100 | 0                 | 03/06/2014 13:33 | User1     |
|2072499 | BSE100 | 1                 | 04/06/2014 08:53 | User2     |
|2072499 | BSE100 |B2                 | 03/06/2014 13:33 | User3     |
|2072605 | BSE100 | 0                 | 03/06/2014 13:33 | User1     |
|2072605 | BSE100 |B3                 | 03/06/2014 13:33 | User3     |
.....................

我正在使用以下 sql 查询来生成上面的表:

select h.id, h.trtype, T.DESCRIPTION, hist.internal_status,
 ts.description status_Desc, h.val_dte, h.account_dte, 
 hist.signature_timestamp, usr.login_name as user_name
  from k$transaction_header h, k$transtypes t, k$transaction_history hist, k$usr usr, K$TRANSACTION_STATUS ts
 where h.trtype = t.trtype
 and hist.trans_id = h.id
 and usr.id=hist.signature_usr
 and ts.id=hist.internal_status
 AND H.ACCOUNT_DTE = TO_DATE(&DATE_YYYYMMDD, 'yyyymmdd')
 order by h.id, hist.internal_status
oracle time
  • 2 个回答
  • 161 Views
Martin Hope
Ztyx
Asked: 2014-03-06 06:49:59 +0800 CST

在 MySQL 服务器主机上更改时钟时间的风险

  • 3

我有一个 MySQL 服务器主机,它的时钟大约有 75 分钟的误差。在 MySQL 运行时更改主机时钟是否有任何风险?

更新:显然NOW()和其他返回当前时间的函数将返回不同的结果。就我而言,我正在考虑 MySQL 中的自旋锁和其他可怕的内部结构。

mysql time
  • 1 个回答
  • 867 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve