在 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 中减去日期的主要内容,如果未能解决你的问题,请参考以下文章

如何减去“ Sysdate”的日期范围

如何在 TypeScript 中从日期中减去天数

Oracle to_date,从 MM-DD-YYYY 中减去 DDMMYY

在 where 子句中从当前日期减去 30 天

从 Redshift 中的 sysdate 减去 5 小时

oracle给定一个日期怎么推算上一个季度的日子