powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не считает разницу между датами
14 сообщений из 14, страница 1 из 1
Не считает разницу между датами
    #39879455
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Есть такая строчка кода: to_date(create_date,'dd.mm.yyyy') - to_date(o.close_date,'dd.mm.yyyy')
Она находит разницу между датами, с ней проблем нет.

Но когда я пытаюсь завернуть эту дату в case:
case
when to_number(to_date(o.close_date,'dd.mm.yyyy') - to_number(create_date,'dd.mm.yyyy'))<to_number('0') then ''
else to_number(to_date(o.close_date,'dd.mm.yyyy') - to_date(create_date,'dd.mm.yyyy'))
end as from_create_date_to_close_date

Выдает ошибку ORA-00932 даже несмотря на функцию to_number.

Подскажите, пожалуйста, как правильно прописать этот case?
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879462
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike,
тунамбер минус тудейт равно плохой апдейт.
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879478
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike,

Месье знает толк в извращениях. И что же должна вернуть конструкция
Код: plsql
1.
to_number(to_date(sysdate))

?
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879479
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

поторопился, просто авторto_number(sysdate)
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879484
Misha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to_number(to_char(sysdate, 'YYYYMMDD')) ?
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879486
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, налепил ты TO_NUMBER везде где не надо и не налепил где надо:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SQL> select  case
  2            when sysdate - sysdate < 0 then ''
  3            else sysdate - sysdate
  4          end as from_create_date_to_close_date
  5    from  dual
  6  /
          else sysdate - sysdate
                       *
ERROR at line 3:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER


SQL> select  case
  2            when sysdate - sysdate < 0 then to_number('')
  3            else sysdate - sysdate
  4          end as from_create_date_to_close_date
  5    from  dual
  6  /

FROM_CREATE_DATE_TO_CLOSE_DATE
------------------------------
                             0

SQL> 



Да и тот не нужен:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> select  case
  2            when sysdate - sysdate < 0 then null
  3            else sysdate - sysdate
  4          end as from_create_date_to_close_date
  5    from  dual
  6  /

FROM_CREATE_DATE_TO_CLOSE_DATE
------------------------------
                             0

SQL> 



SY.
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879494
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike <to_number('0')

Бедняга,у тебя тоже урезанная версия Oracle, где доступен только varchar2
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879497
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, прошу прощения, вот актуальный код:

case
when to_number(to_date(o.close_date,'dd.mm.yyyy') - to_date(create_date,'dd.mm.yyyy'))<to_number('0') then ''
else to_number(to_date(o.close_date,'dd.mm.yyyy') - to_date(create_date,'dd.mm.yyyy'))
end as from_create_date_to_close_date

Без to_number выдает аналогичную ошибку
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879498
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,env

а может у него дата в варчаре ?
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879502
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не сразу осознал, что
Код: plaintext
to_number('0')
не содержит смайлика
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879503
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Спасибо большое!

then null действительно помог))
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879508
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike11) Написал код, вроде все отрабатывает, но ничего не обновляет...
17) Пару первых лет перезалил без проблем. А вот при обновлении текущего года выдает ошибку...
18) Он всё правильно выгружает. Но когда я пытаюсь его завернуть...
21) ... с ней проблем нет. Но когда я пытаюсь завернуть...Авто неизлечимый оптимист, вот уже четвертую тему всё работает, пока он не лезет своими ручонками.
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879513
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соломон, ну ладно автор, но ты то почему не можешь даты сравнить без арифметики?
...
Рейтинг: 0 / 0
Не считает разницу между датами
    #39879594
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envСоломон, ну ладно автор, но ты то почему не можешь даты сравнить без арифметики?

Я лишь показал где ошибка. И возникла бы она независимо от

close_date - create_date < 0

или

close_date < create_date

И самое главное, я бы все равно использовал "c арифметикой" ибо close_date - create_date все равно придется вычислять в подавляющем большинстве случаев.

SY.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не считает разницу между датами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]