2014-12-02 2 views
0

У меня есть таблица с:Oracle: указать больший или меньший тип данных даты

  • две колонки: date_1 и date_2
  • тип данных date (дд-мм-гггг)
  • базы данных является oracle

Я хочу знать, является ли date_1 является greater или smaller затем date_2.

Мой сценарий:

Decode (to_char(date_1,'yyyyddmm') > to_char(date_2,'yyyyddmm'), 'Greater','Smaller') as Status 

CMIIW

+0

Datatypes фактически являются десятичными числами, и вы можете относиться к ним таким образом: SYSDATE + 0,5, или: SYSDATE tvCa

ответ

1

Как тип данных и является дата не нужно конвертируйте эту дату в символ.

SELECT CASE WHEN DATE_1 > DATE_2 THEN 'DATE_1 IS GREATER' 
      WHEN DATE_1 = DATE_2 THEN 'DATE_1 EQUAL to DATE_2' 
           ELSE 'DATE_1 IS SMALLER' 
     END 
0

Нет необходимости конвертировать даты в строки, просто сравнить даты напрямую:

SELECT date_1, date_2 
     ,CASE WHEN date_1 > date_2 THEN 'Greater' ELSE 'Less than or Equal to' END AS Status 
    FROM my_table 
+0

Оператор '>', '<','> =', '<=', не может использоваться с 'decode'? – flyingbird013

+0

Я думаю, вы могли бы сделать что-то вроде «DECODE (GREATEST (date_1, date_2), date_1,« Больше или равно »,« Меньше, чем »). Не уверен, что вы можете использовать логические выражения в декодировании. – Glenn

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