powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / разница datetime year to second, utc_to_datetime и прочее...
4 сообщений из 4, страница 1 из 1
разница datetime year to second, utc_to_datetime и прочее...
    #33248898
falcon111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как найти наиболее точное совпадение двух полей datetime year to second?

Есть большая таблица, в которой есть поле datetime year to second.

В этой таблице нужно найти запись, удовлетворяющую определенному критерию. Но, в результате выборки может вернуться не одна запись. Тогда эти записи должны быть выбраны в порядке, наибольшего совпадения поля datetime с временем, указанным в запросе.

Вопрос - как правильно найти запись с минимальной разницей двух datetime полей?

Пробовал сделать order by abs(dtsubm-'2005-08-30 12:48:22') desc
- ругается HY000:-9700:Routine (abs) ambiguous -
more than one routine resolves to given signature.
Что-то я не понимаю, какие тут могут быть разные варианты функции abs?

Другая мысль - превращать datetime в аналог C-шного time_t - в секунды и сравнивать по ним, но не нашел как. Порывшись в инете выяснил, что есть dbinfo('utc_to_datetime', <datetime>), но не нашел функции, противоположной этой - есть такая?

Как решить данный вопрос средствами сервера, чтобы не прибегать опять к написанию своих ДЛЛек и т.д.?
...
Рейтинг: 0 / 0
разница datetime year to second, utc_to_datetime и прочее...
    #33249153
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Утрированно

where abs(dtsubm-'2005-08-30 12:48:22') < 10 sec
...
Рейтинг: 0 / 0
разница datetime year to second, utc_to_datetime и прочее...
    #33249262
falcon111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nkulikovУтрированно

where abs(dtsubm-'2005-08-30 12:48:22') < 10 sec

Это не решит проблему.
Во-первых abs(dtsubm-'2005-08-30 12:48:22') выдаст ошибку.
Во-вторых, идея не в том чтобы найти ближе 10 с, а в том, чтобы просто найти НАИБЛИЖАЙШУЮ запись, разница при этом может быть несколько секунд, а может быть и несколько часов.

Я пока выкрутился так:
order by case when dtsend>=tstamp2 then dtsend-tstamp2 else tstamp2-dtsend end
но этот метод не травится тем, что сильно много попугаев стал выдавать explain. :(
Поэтому жду других предложений :)
...
Рейтинг: 0 / 0
разница datetime year to second, utc_to_datetime и прочее...
    #33251316
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
drop table t1;
create temp table t1(f1 int, f2 int);

insert into t1 values( 1 ,  4 );
insert into t1 values( 2 ,  3 );
insert into t1 values( 3 ,  2 );
insert into t1 values( 4 ,  1 );

select * from t1 where ABS(f1-f2)=(select min(abs(f1-f2)) from t1);


best regards,
win-kim
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / разница datetime year to second, utc_to_datetime и прочее...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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