2012-06-03 2 views
1

Вычитание даты от SYSDATE дает отрицательные результаты:Вычитание даты SYSDATE в ORACLE

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 

данные::

стол PILOTE

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 
+0

Пожалуйста, разместите схему таблицы 'pilote' и данные в трех строках, используемых для примера. – Codo

+0

Ваш вопрос странный. Ваш SQL говорит '- hire_date', но в вашем примере таблицы указано' - DATEEMB'. Можете ли вы прояснить и показать образцы данных из таблицы? –

+0

Если rent_date в будущем, то ваш запрос верен. Если вы никогда не хотите отрицательных чисел, используйте abs(), но, как сказал @Codo, некоторые данные будут большой помощью. – DaveRlz

ответ

4

Это previous question указывает, что есть формат даты в Oracle, что бы сделать ваш год 92 в 2092 (т.е. в будущем), а чем в 1992 году, как предполагалось. Если этот формат был использован для вставки ваших данных с двухзначным годом, тогда ваши даты будут неправильными, если вы их полностью напишите, вы должны это подтвердить. Решение состоит в том, чтобы зафиксировать данные в том месте, где оно создано, и использовать 4-значные годы.

+0

это была именно эта проблема. – meno

+0

Решение состояло в том, чтобы повторно ввести даты с полным форматом года. – meno

 Смежные вопросы

  • Нет связанных вопросов^_^