INTERVAL数据类型如何工作?

时间:2014-12-24 20:33:58

标签: sql oracle oracle11g intervals

我很难理解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,但第二列和第三列完全相同?

2 个答案:

答案 0 :(得分:2)

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

您显示的是+ 25-00,因为其中一个陈述必须被选中。它本可以是其中任何一个,真的。

答案 1 :(得分:0)

有两种类型的INTERVAL值:逐年和第二天(包括亚秒精度)。如果您的间隔包含年份和/或月份,则表示为年和月。因此,300个月显示为25年,0个月和54年,2个月显示为相同。

如果您注意到,您的第二天间隔显示相同。有一个前导00,表示天数,在这种情况下为零。如果您使用了

选择INTERVAL '36:12:10.1234567'小时候来自双重

你会看到以下输出:

+01 12:12:10.1234567

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

SELECT INTERVAL '75:00'从双重

开始

+00 01:15:00.000000