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