【问题标题】:How does the INTERVAL datatype work?INTERVAL 数据类型如何工作?
【发布时间】:2014-12-24 20:33:58
【问题描述】:

我很难理解 INTERVAL 的工作原理。

SELECT  INTERVAL '300' MONTH,
        INTERVAL '54-2' YEAR TO MONTH, 
        INTERVAL '11-12:10.1234567' HOUR TO SECOND
        FROM dual;

输出如下:

+25-00, +54-02, +00 11:12:10.1234567

我不明白的是,为什么第一列显示为 +25 ,但第二列和第三列却完全一样?

【问题讨论】:

    标签: sql oracle oracle11g intervals


    【解决方案1】:

    300 个月的间隔与 25 年的间隔完全一样,它们的数据类型也相同:年间隔、年月间隔和月间隔只是表示相同类型的三种方式。

    显示 +25-00 是因为必须选择其中一个表示。真的可以是他们中的任何一个。

    【讨论】:

      【解决方案2】:

      有两种类型的 INTERVAL 值:年到月和日到秒(包括亚秒级精度)。如果您的时间间隔包含年和/或月,它将表示为年和月。因此,300 个月显示为 25 年,0 个月和 54 年,2 个月显示为相同。

      如果您注意到,您的每日间隔显示相同。有一个前导 00,表示天数,在本例中为零。如果您改为使用

      SELECT INTERVAL '36:12:10.1234567' HOUR TO SECOND from dual

      您会看到以下输出:

      +01 12:12:10.1234567

      因此,无论您是否实际使用所有精度,您的时间间隔值都将始终显示为逐月或逐秒。最后一个例子应该让一切变得清晰明了:

      从双重选择间隔“75:00”小时到分钟

      +00 01:15:00.000000

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 2013-10-19
        • 2015-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多