在 ORACLE 中从 SYSDATE 中减去日期
Posted
技术标签:
【中文标题】在 ORACLE 中从 SYSDATE 中减去日期【英文标题】:Subtracting a date from SYSDATE in ORACLE 【发布时间】:2012-06-03 07:56:43 【问题描述】:从SYSDATE
中减去日期会得到否定结果:
select floor(SYSDATE - dateemb) from pilote;
FLOOR(SYSDATE-DATEEMB)
----------------------
-29126
-29137
-29522
有什么解决办法吗?
表飞行员:
Name Null? Type
----------------------------------------- -------- ----------------------------
NUMPIL NOT NULL NUMBER
NOMPIL VARCHAR2(25)
ADRPIL VARCHAR2(25)
SALAIRE NUMBER
COMMISSION NUMBER
DATEEMB DATE
使用的数据:
NUMPIL NOMPIL ADRPIL SALAIRE COMMISSION DATEEMB
------- -------- -------- -------- ---------- ---------
1333 FEDOI NANTES 24000 0 01-MAR-92
6589 DUVAL PARIS 18600 5580 12-MAR-92
7100 MARTIN LYON 15600 16000 01-APR-93
【问题讨论】:
请贴出pilote
表的架构和示例中使用的三行数据。
你的问题很奇怪。您的 SQL 显示 - hire_date
,但您的表示例显示 - DATEEMB
。你能澄清并显示表格中的示例数据吗?
如果hire_date 在未来,那么您的查询是正确的。如果您不想要负数,请使用 abs(),但正如 @Codo 所说 - 一些数据会有很大帮助。
@KenWhite,是的,你说得对,对不起,我是从法语翻译过来的“dateemb”。
@meno - 您的问题中仍然没有数据。
【参考方案1】:
previous question 表示 Oracle 中有一种日期格式,可以使您的 92 年变为 2092 年(即未来),而不是预期的 1992 年。如果此格式已用于插入您的 2 位数年份数据,那么您的日期都是错误的,如果您将它们完整地写出来,您应该能够确认这一点。解决方案是在创建数据时修复数据并使用 4 位数年份。
【讨论】:
解决办法是用全年格式重新输入日期。以上是关于在 ORACLE 中从 SYSDATE 中减去日期的主要内容,如果未能解决你的问题,请参考以下文章