Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Нужно узнать сколько секунд прошло с даты, хранящейся в поле таблицы. Вот такая конструкция не работает, возвращает 0 строк. Код: plaintext 1. С конвертацией типов тоже ничего не срослось пока, вот так опять же 0 строк: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 12:56 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
CAST работает, но толку нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:02 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8Нужно узнать сколько секунд прошло с даты, хранящейся в поле таблицы. Какие значения хранятся в том поле? Сравнивать с текущей датой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:19 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8 , например такое вот Код: plaintext 1. таки работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:55 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Странно, datediff очень толерантно относится к представлению входных дат. Код: plaintext 1. 2. Может какая-то беда в данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 14:00 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
krvsa, а у меня не работает :( что-то не так с этим полем, по которому сравниваем (UPDSTMP оно называется у меня) имеет тип %Date, на вид выглядит примерно так: 2009-09-01 10:49:30.0 Вообще это прилинкованная таблица из Оракла, если это чем-то поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 14:09 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8на вид выглядит примерно так: 2009-09-01 10:49:30.0 Прям как тиместамп... А сам пример (мой) в семплс работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 15:22 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
krvsacoder1cv8на вид выглядит примерно так: 2009-09-01 10:49:30.0 Прям как тиместамп... А сам пример (мой) в семплс работает? Ага, Ваш пример работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 15:33 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8что-то не так с этим полем, по которому сравниваем (UPDSTMP оно называется у меня) имеет тип %Date, на вид выглядит примерно так: 2009-09-01 10:49:30.0 Вообще это прилинкованная таблица из Оракла, если это чем-то поможет. Попробуйте вручную изменить тип данных в классе Cache, сгенерированном для этой таблицы, с %Date на %TimeStamp и перекомпилировать класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 15:38 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Turk, Перекомпилировал класс с указанием типа поля %TimeStamp Запрос Код: plaintext 1. Если просто посмотреть таблицу, то записи с датой в этом поле я так же вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 15:59 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
UPDSTMP смотрите в логическом представлении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:22 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
что будет в Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:24 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.UPDSTMP смотрите в логическом представлении? Смотрел в ODBC, в логическом будет так: 2009-09-01 10:49:30 Блок А.Н.что будет в Код: plaintext будет 0 записей. Использование DATEDIFF в любом виде дает пустой результат запроса. Как сейчас заметил, такой запрос тоже пустой результат возвращает: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 16:59 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8будет 0 записей. Использование DATEDIFF в любом виде дает пустой результат запроса. Как сейчас заметил, такой запрос тоже пустой результат возвращает: Код: plaintext 1. Надеюсь, такой запрос: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 17:27 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Turk Надеюсь, такой запрос: Код: plaintext 1. Да, я же говорю, что просто если UPDSTMP смотреть, то оно выводится без проблем. Что будет в UPDSTMP, я писал выше, если Logical Mode то 2009-09-01 10:49:30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 17:38 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Нет, все-таки погодите. 0 записей скорее всего потому, что происходит ошибка. Какой SQLCODE? Что дадут запросы: SELECT string(UPDSTMP) FROM VOUHDR select DATEDIFF('ss',string(UPDSTMP),CURRENT_TIMESTAMP) from VOUHDR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 19:08 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Нет, все-таки погодите. 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 09:19 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8Вообще это прилинкованная таблица из Оракла, если это чем-то поможет. Вы пытаетесь использовать SQL-функции Caché в БД Oracle. При работе с прилинкованной таблицей действует синтаксис той СУБД, к которой она относится. В СУБД Oracle нет функции DATEDIFF, поэтому Ваш запрос не работает. Попробуйте поискать решение в соседней ветке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 09:42 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
servit, вот как.... Спасибо ) А я-то думал это какое-то... эм... представление таблицы в Каше, судя по тому что для нее Persistent класс создается с типами Каше. А тут оказывается все по-другому. Осталось разобраться как эта задача в Oracle решается ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 10:11 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8А я-то думал это какое-то... эм... представление таблицы в Каше, судя по тому что для нее Persistent класс создается с типами Каше. Представление внешней таблицы в Caché может быть осуществлено с помощью: 1) связывание (линкования) таблицы; 2) миграции таблицы, включая структуру и данные. Во втором случае данные хранятся непосредственно в Caché, поэтому Вы можете использовать возможности Caché SQL в полном объёме. Использование Caché SQL Шлюза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 10:43 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
servit, ага, понятно ) спасибо еще раз за разъяснения. ЗЫ: не поддается все-таки пока мне разность дат, в оракловом синтаксисе работает, но возвращает не совсем понятно что ) Код: plaintext 1. 9064 7:26:20.371200000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 10:50 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8в оракловом синтаксисе работает, но возвращает не совсем понятно что ) Что-то мне подсказывает что это Количество дней время9109 7:26:20.371200000 9064 7:26:20.371200000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 11:47 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
krvsa Что-то мне подсказывает что это Количество дней время9109 7:26:20.371200000 9064 7:26:20.371200000 Не ) Это кол-во секунд (то что мне нужно) + какое-то не понятное время... Код: plaintext 1. Вот такие пироги. Я бы получал нормальное время в секундах при обходе RecordSet-a (так как функции Каше у нас в этом запросе не доступны), но проблема в том, что мне нужен отбор по этой разности, т.е. к примеру, записи за последние 30 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 12:07 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8 , в любом слечае наверное нужно ораклистов теребить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 12:13 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
krvsa, А что их теребить? В Оракле запрос: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:04 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
ИМХО, не проще ли так: - написать хранимку в Оракле - вызывать ее из Cache через SQL-шлюз. Подход, проверенный временем :), и безопасность выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:13 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Alexey Maslov, не проще ) "база на Оракл" это часть внешней системы, к которой я доступа не имею, по большему счету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 17:21 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
Ясно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2010, 19:46 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8В Оракле запрос: Код: plaintext 1. А что возвращает этот же запрос при использовании внешней программы (ODBCView, SQLExplorer и т.п.)? Если возвращает то же, что и при выполнении из Оракла, то действительно проблема в Cache. Если же возвращает "плохой" (не устраивающий вас) результат, то Cache здесь не при чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 09:18 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
прочитал топик - пробовали пользовать to_date(переменная, 'YYYY-MM-DD')? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 11:23 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
hooligunпрочитал топик - пробовали пользовать to_date(переменная, 'YYYY-MM-DD')? вот так SELECT DATEDIFF('ss',UPDSTMP,to_date(GETDATE(), 'YYYY-MM-DD')) FROM VOUHDR to_date вернет данные %Date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 12:36 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
HooliGUN, DATEDIFF нет в Oracle ) Вроде разобрался! Проблема была в разных типах текущей даты и поля с датой из таблицы (наверное). Вот так работает: Код: plaintext Но теперь есть другая проблема. Вот вроде бы выяснили, что если таблица линкованная то нужно писать запрос на sql-диалекте той базы к которой линкуем. Но почему функции (в данном случае Оракла) работают выборочно?? Например, TO_DATE доступна: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 13:35 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
По-моему, to_date() есть в оракле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 13:43 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8HooliGUN, DATEDIFF нет в Oracle ) Вроде разобрался! Проблема была в разных типах текущей даты и поля с датой из таблицы (наверное). Вот так работает: Код: plaintext Но теперь есть другая проблема. Вот вроде бы выяснили, что если таблица линкованная то нужно писать запрос на sql-диалекте той базы к которой линкуем. Но почему функции (в данном случае Оракла) работают выборочно?? Например, TO_DATE доступна: Код: plaintext Код: plaintext должно работать SELECT {fn TRUNCATE(CURRENT_DATE,'DAY')} FROM VOUHDR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 17:16 |
|
||
|
Как в запросе получить разность дат?
|
|||
|---|---|---|---|
|
#18+
coder1cv8, Если с помощью связанной таблицы не удаётся получить нужный результат, есть возможность программно выполнить нужный Вам SQL-код, используя Java-Шлюз. Например: Пример Class oracle.test Extends %RegisteredObject { ClassMethod Test(host As %String = "127.0.0.1",port As %Integer = {$$$JDBCGatewayPort}) As %Status { #dim exception As %Exception.StatusException set url="jdbc:oracle:thin:@oracleserver:oracleport:scott" set username="логин" set password="пароль" #dim classPath As %ListOfDataTypes=##class(%ListOfDataTypes).%New() ; каталог с jar-файлами драйвера Oracle do classPath.Insert("C:\JDBC\Oracle\") try { #dim gateway As %Net.Remote.Gateway=##class(%Net.Remote.Gateway).%New() ; подключаемся к шлюзу $$$TOE(status,gateway.%Connect(host,port,,,classPath)) $$$TOE(status,gateway.%ClassForName("oracle.jdbc.OracleDriver")) #dim connection As java.sql.Connection=##class(java.sql.DriverManager).getConnection(gateway,url,username,password) #dim statement As java.sql.Statement=connection.createStatement() #dim rs As java.sql.ResultSet=statement.executeQuery("select ID,UPDSTMP,(SYSDATE-UPDSTMP)*24*60*60 from VOUHDR") #dim rsMetaData As java.sql.ResultSetMetaData=rs.getMetaData() write !,"Выполнение запроса",! write "==============================================",! for i=1:1:rsMetaData.getColumnCount() write rsMetaData.getColumnName(i),?$x+10 write !,"----------------------------------------------",! while (rs.next()) { for i=1:1:rsMetaData.getColumnCount() write rs.getString(i),?$x+10 } write !,"----------------------------------------------",! $$$TOE(status,gateway.%Disconnect()) } catch exception { ; выводим текст ошибки на русском языке write $system.Status.GetErrorText(exception.AsStatus(),"ru") } } } Программное использование JDBCGateway ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2010, 10:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=39&tid=1557935]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 328ms |

| 0 / 0 |
