首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle - Number还是Interval数据类型中的减去日期?

Oracle - Number还是Interval数据类型中的减去日期?
EN

Stack Overflow用户
提问于 2012-02-17 12:32:21
回答 3查看 145.2K关注 0票数 24

我有一个关于Oracle DATE和INTERVAL数据类型的内部工作方式的问题。根据Oracle 11.2 SQL Reference,减去2个DATE数据类型,结果将是NUMBER数据类型。

在粗略的测试中,这似乎是真的:

代码语言:javascript
复制
CREATE TABLE test (start_date DATE);
INSERT INTO test (start_date) VALUES (date'2004-08-08');
SELECT (SYSDATE - start_date) from test;

将返回NUMBER数据类型。

但现在如果你这样做了:

代码语言:javascript
复制
SELECT (SYSDATE - start_date) DAY(5) TO SECOND from test;

您将获得一个INTERVAL数据类型。换句话说,Oracle可以将DATE减法中的数字转换为INTERVAL类型。

所以现在我想我可以尝试在括号中直接放入一个NUMBER数据类型(而不是做'SYSDATE - start_date‘,这无论如何都会导致一个数字):

代码语言:javascript
复制
SELECT (1242.12423) DAY(5) TO SECOND from test;

但这会导致错误:

代码语言:javascript
复制
ORA-30083: syntax error was found in interval value expression

所以我的问题是:这里发生了什么?减去日期似乎应该得到一个数字(如SELECT语句#1所示),该数字不能自动转换为INTERVAL类型(如SELECT语句#3所示)。但是,如果您使用日期减法表达式而不是输入一个原始数字(SELECT语句#2),Oracle似乎能够以某种方式做到这一点。

谢谢

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9322935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档