【问题标题】:SQL Select Count Column Between two TimesSQL选择两次之间的计数列
【发布时间】:2013-07-01 09:19:21
【问题描述】:

我有一个数据库,其中有两列 - 日期(包括时间)和分钟 - 如下:

Open_Time                          分钟
2013-01-01 09:00:00.000    1
2013-01-01 09:01:00.000    1
2013-01-01 09:02:00.000    1
2013-01-01 09:03:00.000    1
2013-01-01 09:04:00.000    1
2013-01-01 09:05:00.000    1

如何计算第一个日期时间和最后一个日期时间之间的分钟数?

选择 COUNT(分钟)
来自 test_table
其中 open_time 在 '2013-01-01 09:00:00.000' 和 '2013-01-01 09:05.000' 之间

对我不起作用。

我需要将分钟计为当前时间 - 未来的开放时间

感谢您的任何反馈!

【问题讨论】:

    标签: sql oracle time count between


    【解决方案1】:

    对于mysql可能可以使用:

    SELECT TIMESTAMPDIFF(MINUTE,'2013-01-01 09:00:00.000','2013-01-01 09:05.000') ; // return result as minutes
    

    在这里阅读:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

    【讨论】:

    • SELECT TIMESTAMPDIFF(MINUTE,'2013-01-01 09:00:00.000','2013-01-01 09:05.000') 也会以分钟为单位返回时差。
    【解决方案2】:

    虽然返回 6,但 SQL 看起来不错。您想要那个还是想要 5?如果你想要的话,你总是可以从 09:01:00.000 开始你的 SELECT 标准。

    这里的 SQLfiddle:http://sqlfiddle.com/#!2/d3f13/2

    【讨论】:

    • 谢谢,我的数据库中可能存在问题,因为这些值每天都没有正确排序。所以我的命令应该有效。
    【解决方案3】:

    我没有得到你想要的。但是,如果想从您的日期中提取分钟,请使用以下查询。

    SELECT EXTRACT(MINUTE FROM Open_Time) FROM test_table;
    
    SELECT EXTRACT(MINUTE FROM Open_Time)-10 FROM test_table;
    

    上面的查询只会给出分钟的差异。因此,请根据您的标准检查您的 DAY、HOUR、MINUTE、SECONDS

    【讨论】:

    • 感谢您的回复。我需要的是以下 - 计算每个时间间隔的分钟数。我将从我的辅助表中以这种方式计算 SLA。所以我需要计算当前时间(来自辅助表)和开放时间之间的分钟数。因此,如果开放时间是 2013 年 6 月 20 日 09:00,我需要计算今天和这个日期时间之间的分钟数。有意义吗?
    • 如果我能帮助你,我很高兴。
    • mysql> SELECT TIMESTAMPDIFF(MINUTE,'2013-06-20 09:00','2013-07-01 15:12');
    • OK... 没问题,但我在大学时代学到的甲骨文经验并不多。之后我再也没用过。也请在您的问题中为 oracle 添加标签
    • 当然,没有问题。无论如何谢谢:)
    【解决方案4】:

    在 sql server 中你可以使用 DATEDIFF 函数,它接受以下参数: DATEDIFF(datepart,startdate,end date) 并在所选日期部分的指定日期边界之间返回 count(int),因此您可以使用如下内容:

    select DATEDIFF(mi,MIN(opentime),MAX(opentime)) AS 'minutes'
    from test_table
    where open_time between '2013-01-01 09:00:00.000' and '2013-01-01 09:05.000'
    

    您还可以从“分钟”列中计算分钟数,但很难用当前日期计算它们(除非每次计算时您在表中插入当前时间,或创建临时表)!

    【讨论】:

    • 谢谢。那可能有用。以后会很难的。我必须计算从(门票)开放时间到现在的分钟数。我不知道从哪里开始。例如。票的开放时间是 20.6.2013 09:00,我需要计算从这个日期到现在的时间间隔(分钟)。但是,这里的主要问题还必须考虑到 09-17 的工作时间。这就是为什么我有临时表(在我的第一个问题中的例子),并标记了工作时间和假期。在这张临时表的帮助下,我想计算总分钟数。
    • 嗯,那么您应该使用一些数学方法从总分钟数中仅提取工作分钟数。如果可以,在应用程序中编写该逻辑可能会更容易!
    • 我有那个 .. 我有一个表格(上面的例子),其中年份每天(不包括周末和节假日)按分钟划分,所以一天有 481 行(09 - 17) .. 困难的部分是在 ETL 中进行计数,所以我计算打开时间和当前时间之间的差异。
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多