|
|
|
Сравнение дат (запрос)
|
|||
|---|---|---|---|
|
#18+
Привет всем. Возникла такая проблема: нужно составить хранимую процедуру, которая делала бы следующее: есть таблица, в которой клиенты оставляют некие свои идентификаторы и время изменения записи в соответствующм поле, тип TIMESTAMP (Win32,FB1.5, Dialect3). Так вот процедура должна перебрать все записи, выявить те, у которых разрыв (Now-TimeField) больше определенного, при выполнении условия делать чего-то (отслеживает не отвалилились ли клиенты). Вопрос только один как реализовать средствами sql (Now-TimeField)? На стороне клиента делал это так while (!IBSQL1->Eof) { TDateTime TD = IBSQL1->FieldByName("RMO_TIME")->AsDateTime; Double TD2 = Now() - TD; if (TD2 > (CONNECT_DELAY * 1.15E-5)) // проверка тайм-аута (разница в с.) { //выполняю чего надо } .... IBSQL1->Next(); } Теперь понадобилось перенести логику на сервер... Первое, что приходит в голову, это получить количество секунд через Extract (YEAR, MONTH .... FROM DATE_FIELD), но что-то уж слишком некрасиво получается, да и перемножать долго будет - нужна оперативность. В общем, может я чего-то упустил при работе с датой-временем - подскажите как это сделать красиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:17:25 |
|
||
|
Сравнение дат (запрос)
|
|||
|---|---|---|---|
|
#18+
Так в SQL тоже вычисть из одного времени другое и получить разницу в секундах. Напиши: SELECT * FROM TABLE1 WHERE TIME_FIELD<CURRENT_TIME-10000 Только учти что 'NOW' и CURRENT_TIMESTAMP - это не одно и то-же. Одно из них показывает время текущее, а другое время начала транзакции или что-то в этом роде. Не помню точно - может кто ещё подскажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:34:04 |
|
||
|
Сравнение дат (запрос)
|
|||
|---|---|---|---|
|
#18+
Спасибо! Действительно работает :) А время начала транзакции у меня практически совпадает с текущим, т.к. процедура выполняется в своей транзакции, которая специально для нее запускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:49:08 |
|
||
|
Сравнение дат (запрос)
|
|||
|---|---|---|---|
|
#18+
>Gold Код: plaintext 1. 2. >zahodun Сравнивать надо дату-время, иначе будут проблемы при наступлении новых суток...:) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 18:03:07 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32600298&tid=1578272]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 528ms |

| 0 / 0 |
