powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как в запросе получить разность дат?
25 сообщений из 36, страница 1 из 2
Как в запросе получить разность дат?
    #36899114
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно узнать сколько секунд прошло с даты, хранящейся в поле таблицы.
Вот такая конструкция не работает, возвращает 0 строк.
Код: plaintext
1.
SELECT DATEDIFF('ss',UPDSTMP,GETDATE()) FROM VOUHDR
Проблема, как я понимаю, в разных типах: GETDATE() - это %Timestamp, а UPDSTMP - это на самом деле %Date.
С конвертацией типов тоже ничего не срослось пока, вот так опять же 0 строк:
Код: plaintext
1.
SELECT {fn CONVERT(UPDSTMP,SQL_TIMESTAMP)} FROM VOUHDR
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899139
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CAST работает, но толку нет.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899200
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8Нужно узнать сколько секунд прошло с даты, хранящейся в поле таблицы.
Какие значения хранятся в том поле? Сравнивать с текущей датой?
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899323
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8 , например такое вот

Код: plaintext
1.
SELECT DISTINCT DATEDIFF('ss','1999-01-01 00:00:00',CURRENT_TIMESTAMP)
FROM Sample.Person

таки работает...
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899340
Странно, datediff очень толерантно относится к представлению входных дат.

Код: plaintext
1.
2.
-- +$h = 62013 (14/10/2010) 
SELECT datediff('ss',  62013 , {fn now}) _now, datediff('ss',  62013 , getdate()) _getdate
#_now_getdate14615646156

Может какая-то беда в данных?
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899370
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

а у меня не работает :(
что-то не так с этим полем, по которому сравниваем (UPDSTMP оно называется у меня)
имеет тип %Date, на вид выглядит примерно так: 2009-09-01 10:49:30.0
Вообще это прилинкованная таблица из Оракла, если это чем-то поможет.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899603
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8на вид выглядит примерно так: 2009-09-01 10:49:30.0
Прям как тиместамп... А сам пример (мой) в семплс работает?
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899639
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsacoder1cv8на вид выглядит примерно так: 2009-09-01 10:49:30.0
Прям как тиместамп... А сам пример (мой) в семплс работает?
Ага, Ваш пример работает...
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899651
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
coder1cv8что-то не так с этим полем, по которому сравниваем (UPDSTMP оно называется у меня)
имеет тип %Date, на вид выглядит примерно так: 2009-09-01 10:49:30.0
Вообще это прилинкованная таблица из Оракла, если это чем-то поможет.
Попробуйте вручную изменить тип данных в классе Cache, сгенерированном для этой таблицы, с %Date на %TimeStamp и перекомпилировать класс.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899738
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,

Перекомпилировал класс с указанием типа поля %TimeStamp
Запрос
Код: plaintext
1.
SELECT DISTINCT DATEDIFF('ss',UPDSTMP,CURRENT_TIMESTAMP) FROM VOUHDR
все равно не работает!
Если просто посмотреть таблицу, то записи с датой в этом поле я так же вижу.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899819
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDSTMP смотрите в логическом представлении?
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899826
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что будет в
Код: plaintext
SELECT UPDSTMP,string(UPDSTMP),DATEDIFF('ss',UPDSTMP,CURRENT_TIMESTAMP), DATEDIFF('ss',string(UPDSTMP),CURRENT_TIMESTAMP) FROM VOUHDR
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899920
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.UPDSTMP смотрите в логическом представлении?
Смотрел в ODBC, в логическом будет так: 2009-09-01 10:49:30
Блок А.Н.что будет в
Код: plaintext
SELECT UPDSTMP,string(UPDSTMP),DATEDIFF('ss',UPDSTMP,CURRENT_TIMESTAMP), DATEDIFF('ss',string(UPDSTMP),CURRENT_TIMESTAMP) FROM VOUHDR

будет 0 записей. Использование DATEDIFF в любом виде дает пустой результат запроса. Как сейчас заметил, такой запрос тоже пустой результат возвращает:
Код: plaintext
1.
SELECT string(UPDSTMP) FROM VOUHDR
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36899995
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
coder1cv8будет 0 записей. Использование DATEDIFF в любом виде дает пустой результат запроса. Как сейчас заметил, такой запрос тоже пустой результат возвращает:
Код: plaintext
1.
SELECT string(UPDSTMP) FROM VOUHDR

Надеюсь, такой запрос:
Код: plaintext
1.
SELECT * FROM VOUHDR
вернет записи? Если да, то что будет в поле UPDSTMP? Если нет, то попробуйте выполнить этот же запрос с помощью внешней программы, напрямую подключившись к ODBC.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900036
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk
Надеюсь, такой запрос:
Код: plaintext
1.
SELECT * FROM VOUHDR
вернет записи? Если да, то что будет в поле UPDSTMP? Если нет, то попробуйте выполнить этот же запрос с помощью внешней программы, напрямую подключившись к ODBC.
Да, я же говорю, что просто если UPDSTMP смотреть, то оно выводится без проблем. Что будет в UPDSTMP, я писал выше, если Logical Mode то 2009-09-01 10:49:30
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900227
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, все-таки погодите.
0 записей скорее всего потому, что происходит ошибка. Какой SQLCODE?

Что дадут запросы:
SELECT string(UPDSTMP) FROM VOUHDR

select DATEDIFF('ss',string(UPDSTMP),CURRENT_TIMESTAMP) from VOUHDR
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900678
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Нет, все-таки погодите.
0 записей скорее всего потому, что происходит ошибка. Какой SQLCODE?

Что дадут запросы:
SELECT string(UPDSTMP) FROM VOUHDR

select DATEDIFF('ss',string(UPDSTMP),CURRENT_TIMESTAMP) from VOUHDR
Окей :) Отвечаю подробно.
Первый запрос: SQLCODE: 100 Количество строк: 0
Второй запрос: SQLCODE: 100 Количество строк: 0

А вот так:
[src]
select UPDSTMP from VOUHDR
[src]
все работает на ура.
# UPDSTMP
1 2009-09-01 10:49:30
2 2009-09-01 10:50:39
3 2009-09-01 11:52:32
4 2009-09-01 12:08:09
5 2009-09-01 12:10:55
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900695
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8Вообще это прилинкованная таблица из Оракла, если это чем-то поможет.
Вы пытаетесь использовать SQL-функции Caché в БД Oracle. При работе с прилинкованной таблицей действует синтаксис той СУБД, к которой она относится.
В СУБД Oracle нет функции DATEDIFF, поэтому Ваш запрос не работает.
Попробуйте поискать решение в соседней ветке.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900730
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

вот как.... Спасибо ) А я-то думал это какое-то... эм... представление таблицы в Каше, судя по тому что для нее Persistent класс создается с типами Каше. А тут оказывается все по-другому.
Осталось разобраться как эта задача в Oracle решается )
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900806
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8А я-то думал это какое-то... эм... представление таблицы в Каше, судя по тому что для нее Persistent класс создается с типами Каше.
Представление внешней таблицы в Caché может быть осуществлено с помощью:
1) связывание (линкования) таблицы;
2) миграции таблицы, включая структуру и данные.

Во втором случае данные хранятся непосредственно в Caché, поэтому Вы можете использовать возможности Caché SQL в полном объёме.
Использование Caché SQL Шлюза
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36900820
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

ага, понятно ) спасибо еще раз за разъяснения.

ЗЫ: не поддается все-таки пока мне разность дат, в оракловом синтаксисе работает, но возвращает не совсем понятно что )
Код: plaintext
1.
select (sysdate-UPDSTMP)* 24 * 60 * 60  as sec from VOUHDR
9109 7:26:20.371200000
9064 7:26:20.371200000
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36901008
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8в оракловом синтаксисе работает, но возвращает не совсем понятно что )

Что-то мне подсказывает что это

Количество дней время9109 7:26:20.371200000 9064 7:26:20.371200000
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36901075
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa
Что-то мне подсказывает что это

Количество дней время9109 7:26:20.371200000 9064 7:26:20.371200000
Не ) Это кол-во секунд (то что мне нужно) + какое-то не понятное время...
Код: plaintext
1.
select UPDSTMP, sysdate as currentDate ,(sysdate-UPDSTMP)* 24 * 60 * 60  as sec
UPDSTMP currentDate sec2010-10-15 08:19:02 2010-10-15 11.56.29.724071000 4:0 13047 17:22:39.734400000 2010-10-15 08:19:47 2010-10-15 11.56.29.724071000 4:0 13002 17:22:39.734400000
Вот такие пироги. Я бы получал нормальное время в секундах при обходе RecordSet-a (так как функции Каше у нас в этом запросе не доступны), но проблема в том, что мне нужен отбор по этой разности, т.е. к примеру, записи за последние 30 сек.
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36901094
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8 , в любом слечае наверное нужно ораклистов теребить...
...
Рейтинг: 0 / 0
Как в запросе получить разность дат?
    #36902053
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

А что их теребить? В Оракле запрос:
Код: plaintext
1.
SELECT (sysdate-UPDSTMP)* 24 * 60 * 60  FROM VOUHDR
работает! И возвращает кол-во секунд без всяких выкрутасов. Проблема в Каше.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как в запросе получить разность дат?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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