powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение Дат и ошибка ora-01858
25 сообщений из 31, страница 1 из 2
Сравнение Дат и ошибка ora-01858
    #39499522
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо выбрать строчку с датой из таблицы 2, которая будет выводиться только если меньше чем остальные даты
Код: plsql
1.
2.
3.
4.
5.
select * from tab1
                union all
select  min(t2.start_time)  start_time
                from  tab2   
                where exists (select null from tab1 t1 where trunc(t2.start_time) < to_date (t1.start_time,'dd-mm-yyyy'))



когда делаю как указано выше по всей базе выходит ошибка ora-01858, по 1, 2 предприятиям все нормально.
При условии t2.start_time < t1.start_time ошибки нет но условие не работает
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499528
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,

Код: plsql
1.
to_date (t1.start_time


говнокод
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499529
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,

0. Какие типы данных у полей start_time в tab1 и tab2?
1. В таблице tab1 одно поле start_time?
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499597
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0. Сложный вопрос tab2 Typ=12 Len=7: 120,116,12,31,1,1,1
tab1 Typ=12 Len=7: 119,188,9,1,1,1,1

1. Нет там несколько, те же параметры что и во второй таблице
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499658
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,

ну предложите что-то получше
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499663
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,

The two data types 12 and 13 are for two different purposes.

Type 12 - Dates stored in table
Type 13 - Date returned by internal date functions like SYSDATE/CURRENT_DATE, also when converting a string literal into date using TO_DATE or ANSI Date literal DATE 'YYYY-MM-DD'.

Соответственно, 123ий прав. Обрезать date через to_date - это говнокод с неявным преобразованием типов и плохо предсказуемым результатом.

Если нужно обрезать время, используй тот же trunc.
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499664
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida11. Нет там несколько, те же параметры что и во второй таблице
Тогда запрос в принципе нерабочий.
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499693
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Запрос рабочий и работает с условием where trunc(t2.start_time) < to_date (t1.start_time,'dd-mm-yyyy')
но не по всей базе а только для отдельных предприятий.
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499696
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,
1 desc tab1
2 desc tab2
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499709
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envaranida11. Нет там несколько, те же параметры что и во второй таблице
Тогда запрос в принципе нерабочий.

просто интересно
при какой маске и дате получим "ora-01858, по 1, 2 предприятиям все нормально"

2 aranida1
для 1, 2 предприятий t1.start_time not null?

......
stax
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499712
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,

Код: plsql
1.
2.
3.
4.
5.
select * from tab1
                union all
select  min(t2.start_time)  start_time
                from  tab2   
                where e


там несколько
Запрос рабочий и работает
в одном из утверждений ты обманываешь
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499713
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1env,

Запрос рабочий и работает с условием where trunc(t2.start_time) < to_date (t1.start_time,'dd-mm-yyyy')
но не по всей базе а только для отдельных предприятий.

с трудом верітся
Код: plsql
1.
2.
3.
4.
5.
select * from tab1 -- * все поля, врядли в tab1 одно поле
                union all
select  min(t2.start_time)  start_time
                from  tab2   --нет алиаса т2
                where exists (select null from tab1 t1 where trunc(t2.start_time) < to_date (t1.start_time,'dd-mm-yyyy'))



ps
зачем Вам to_date если поле типа date?

......
stax
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499715
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxпри какой маске и дате получим "ora-01858, по 1, 2 предприятиям все нормально"
01-01 .. 12-01
01-01 .. 01-12
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499716
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

ИМХО
tab1.start_time - varchar
для 2 предприятий заполено как 'dd-mm-yyyy'
+
авторПри условии t2.start_time < t1.start_time ошибки нет но условие не работает
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499721
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envStaxпри какой маске и дате получим "ora-01858, по 1, 2 предприятиям все нормально"
01-01 .. 12-01
01-01 .. 01-12
имхо
так ору не дост, неправильно посчитает, но ora-01858 не будет

зы
исходим из
автор0. Сложный вопрос tab2 Typ=12 Len=7: 120,116,12,31,1,1,1
tab1 Typ=12 Len=7: 119,188,9,1,1,1,1


12-date

.....
stax
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499723
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

with tab1
(select id, uwi, start_time
from tab3
where ph.start_time between TO_DATE('01-04-1901','DD-MM-YYYY hh24:mi:ss') and TO_DATE('15-09-2018','DD-MM-YYYY hh24:mi:ss')
group by id, uwi,start_time),

tab4 as
(select * from tab1
union
select id, uwi, min(ph.start_time) start_time
from tab2

where exists (select null from tab1 t1 where trunc (ph.start_time) < TO_DATE (t1.start_time,'DD-MM-YYYY hh24:mi:ss')
)
group by id, uwi)

select ............
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499726
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Хорошо если тип date и не надо преобразовывать в to_date, почему тогда просто условие
where t2.start_time < t1.start_time не работает, есть какие-нибудь идеи?
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499729
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxenvпропущено...

01-01 .. 12-01
01-01 .. 01-12
имхо
так ору не дост, неправильно посчитает, но ora-01858 не будет

.....
stax

та запросто даст, если для to_date (t1.start_time,'dd-mm-yyyy')
в поле t1.start_time - будет дата в другом формате, напимер '10-JAN-2001'
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499733
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1Stax,

Хорошо если тип date и не надо преобразовывать в to_date, почему тогда просто условие
where t2.start_time < t1.start_time не работает, есть какие-нибудь идеи?

Вы бы лучше сказали какой тип у start_time, а не условия ставили ...
да и не понятно что значит "не работает" выводит ошибку или не то что Вы хотели?
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499734
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1Stax,

Хорошо если тип date и не надо преобразовывать в to_date, почему тогда просто условие
where t2.start_time < t1.start_time не работает, есть какие-нибудь идеи?
что значит не работает?
выбирает лишнее/недостающие?


ps
по любому to_date от поля типа date ето мина (касяк)

зыы
как вариант
в одной табличке значение start_time ето дата в другой дата+время


.....
stax
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499740
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLВы бы лучше сказали какой тип у start_time
ТС явно через dump показал, что date.


aranida1where t2.start_time < t1.start_time не работает,
Пример на данных показывай. А то как-то не верится.

И запрос уже приведи хоть к насколько-то читабельному и непротиворечивому виду. А то опять синтаксически корявый вариант приводишь.

Скорее всего, у тебя есть дополнительные отсечки или данные не пересекаются. Но по твоим попыткам обфусцировать запрос этого понять нельзя.
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499748
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envТС явно через dump показал, что date.
ТС показал результат неизвестного запроса, а вот мой вопрос про desc проигнорировал
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499757
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aranida1,

похоже тебе так подойдет:
Код: plsql
1.
2.
3.
4.
5.
select * from tab1
                union all
select  min(t2.start_time)  start_time
                from  tab2   
                where exists (select null from tab1 t1 where trunc(t2.start_time) < t1.start_time)
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499779
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Запрос просто огромный, почикала со всех сторон и все.


Stax,

Не работает это выводит минимальную дату даже тогда, когда t2.start_time больше t1.start_time
например вывела дату 31.12.2011 хотя она больше 01.01.2011
...
Рейтинг: 0 / 0
Сравнение Дат и ошибка ora-01858
    #39499780
aranida1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,


123ййaranida1,
1 desc tab1
2 desc tab2

Не поняла о чем речь, поэтому не ответила
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение Дат и ошибка ora-01858
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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