【问题标题】:Interval time from MySQL DatabaseMySQL 数据库的间隔时间
【发布时间】:2019-06-14 09:41:15
【问题描述】:

我需要从早上 06:00 到早上 8:00 之间的 MySQL 数据库表中的所有行。

我没有成功启动这个 sql 查询,因为我不理解输出。

时间间隔(06:00 AM 和 08:00 AM)不正确,如何解决?

提前感谢您的帮助。

mysql> SELECT
    DAYOFWEEK(dStart) AS DOW,
    dStart,
    dEnd,
    cd
FROM
    `2019tblCd`
WHERE
    (
        cd IN ('P')
        AND DAYOFWEEK(dStart) BETWEEN 2
        AND 6
        AND (
            time(dStart) >= '06:00:00'
            OR time(dEnd) <= '08:00:00'
        )
    )
ORDER BY
    STR_TO_DATE(dStart, '%Y-%m-%d %H:%i:%s') DESC
LIMIT 10;

+-----+---------------------+---------------------+----+
| DOW | dStart              | dEnd                | cd |
+-----+---------------------+---------------------+----+
|   6 | 2019-06-07 19:15:41 | 2019-06-07 19:38:53 | P  |
|   6 | 2019-06-07 18:51:28 | 2019-06-07 19:17:47 | P  |
|   6 | 2019-06-07 18:29:39 | 2019-06-07 18:35:32 | P  |
|   6 | 2019-06-07 18:22:27 | 2019-06-07 18:45:33 | P  |
|   6 | 2019-06-07 18:09:07 | 2019-06-07 18:38:51 | P  |
|   6 | 2019-06-07 18:05:31 | 2019-06-07 18:42:46 | P  |
|   6 | 2019-06-07 17:48:01 | 2019-06-07 17:58:08 | P  |
|   6 | 2019-06-07 17:34:26 | 2019-06-07 18:23:23 | P  |
|   6 | 2019-06-07 17:26:54 | 2019-06-07 18:08:29 | P  |
|   6 | 2019-06-07 17:10:28 | 2019-06-07 17:48:48 | P  |
+-----+---------------------+---------------------+----+
10 rows in set

编辑#2

+-----+---------------------+---------------------+----+
| DOW | dStart              | dEnd                | cd |
+-----+---------------------+---------------------+----+
|   6 | 2019-06-07 07:15:41 | 2019-06-07 07:38:53 | P  |
|   6 | 2019-06-07 06:51:28 | 2019-06-07 07:17:47 | P  |
|   6 | 2019-06-07 06:29:39 | 2019-06-07 06:35:32 | P  |
|   6 | 2019-06-07 06:22:27 | 2019-06-07 06:45:33 | P  |
|   6 | 2019-06-07 06:09:07 | 2019-06-07 06:38:51 | P  |
|   6 | 2019-06-07 06:05:31 | 2019-06-07 06:42:46 | P  |
|   6 | 2019-06-07 05:48:01 | 2019-06-07 05:58:08 | P  |
|   6 | 2019-06-07 05:34:26 | 2019-06-07 06:23:23 | P  |
|   6 | 2019-06-07 05:26:54 | 2019-06-07 06:08:29 | P  |
|   6 | 2019-06-07 05:10:28 | 2019-06-07 05:48:48 | P  |
+-----+---------------------+---------------------+----+
10 rows in set

编辑#1

正确的输出是:

+-----+---------------------+---------------------+----+
| DOW | dStart              | dEnd                | cd |
+-----+---------------------+---------------------+----+
|   6 | 2019-06-07 06:15:41 | 2019-06-07 07:38:53 | P  |
|   6 | 2019-06-07 06:51:28 | 2019-06-07 07:17:47 | P  |
|   6 | 2019-06-07 06:29:39 | 2019-06-07 07:35:32 | P  |
|   6 | 2019-06-07 06:22:27 | 2019-06-07 07:45:33 | P  |
|   6 | 2019-06-07 06:09:07 | 2019-06-07 07:38:51 | P  |
|   6 | 2019-06-07 07:05:31 | 2019-06-07 07:42:46 | P  |
|   6 | 2019-06-07 07:48:01 | 2019-06-07 07:58:08 | P  |
|   6 | 2019-06-07 07:34:26 | 2019-06-07 07:53:23 | P  |
|   6 | 2019-06-07 07:26:54 | 2019-06-07 07:58:29 | P  |
|   6 | 2019-06-07 07:10:28 | 2019-06-07 07:48:48 | P  |
+-----+---------------------+---------------------+----+

【问题讨论】:

  • => 6
  • @Solarflare 谢谢,但输出仍然是错误的
  • 您可能误解了我的评论。更直接地说:您的问题描述为“( 06:00 AM and 08:00 AM )”,您的代码为“time(dStart) >= '06:00:00' 时间(dEnd)
  • @Solarflare 我已经编辑了我的第一个问题,并且添加了正确的输出。谢谢

标签: mysql time intervals


【解决方案1】:

试试这个:

mysql> SELECT
    DAYOFWEEK(dStart) AS DOW,
    DATE_FORMAT(dStart,'%Y-%m-%d %h:%i:%s') as dStart,
    DATE_FORMAT(dEnd,'%Y-%m-%d %h:%i:%s') as dEnd,
    cd
FROM
    `2019tblCd`
WHERE
    (
        cd IN ('P')
        AND DAYOFWEEK(dStart) BETWEEN 2
        AND 6
        AND (
            DATE_FORMAT(time(dStart),'%H:%i:%s') >= '18:00:00'
            AND DATE_FORMAT(time(dEnd),'%H:%i:%s')  <= '20:00:00'
        )
    )
ORDER BY
    STR_TO_DATE(dStart, '%Y-%m-%d %H:%i:%s') DESC
LIMIT 10;

【讨论】:

  • 非常感谢您的回复,我已经编辑了我的第一个问题并添加了您的输出Edit #2
  • 如果对您有用,请标记为正确答案。
  • 不,在我的输出中不起作用2019-06-07 05:10:28 | 2019-06-07 05:48:48
  • 您能否详细说明您的评论。
  • 我需要 06:00:00 到 08:00:00 之间的 MySQL 数据库表中的所有行。在输出中输入您的查询,我有这个错误的行2019-06-07 05:10:28 | 2019-06-07 05:48:48。请在我的第一个问题中查看我的 Edit #2
猜你喜欢
  • 1970-01-01
  • 2012-04-07
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多