![]() |
|
Модераторы: Akella |
![]()
|
|
| scorp |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Ниже процедура, которая отбирает людей старше 60 лет и ещё не уволенных.
все поля дат у меня имеют тип Timestamp SET TERM ^; CREATE PROCEDURE old_drivers AS Declare variable driverID integer; Declare variable DateTime Date; BEGIN DateTime = cast('now' as Date); For Select ID From tbDrivers where (:DateTime - tbDrivers.birthday)>60 and tbDrivers.date_dismissal is null Into :driverID do begin Update tbDrivers set tbDrivers.date_dismissal=:DateTime where tbDrivers.ID=:driverID; suspend; end END^ SET TERM ;^ |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
1) Нет вопроса
2) Нет указания на то что именно не работает 3) Нет указания на то какая это база данных, так как даты в разных базах организованы немного по разному. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Процедура скорее всего на Interbase.... но что-то и мне не совсем понятно, в чем у тебя проблема....
-------------------- |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: нет Всего: 62 |
Предполагаю, что строка
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Это еще ни о чем не говорит..... -------------------- |
|||
|
||||
| scorp |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Сорри, если не корректно задал вопрос.
Это хранимая процедура под InterBase. весь вопрос состоит в том, что не работает выражение, выделенное жирным шрифтом. Это выражение слегка изменилось в моей последней редакции: where (:DateTime - cast (tbDrivers.birthday as Date))>60 and tbDrivers.date_dismissal is null Я не получаю целого числа перед сравнением с чимслом 60. все поля с датами в базе имеют тип TimeStamp. Процедура отбирает всех сотрудников старше 60 лет и ещё не уволенных и отправляет их на пенсию. Как его переделать? |
|||
|
||||
| scorp |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Всё народ сделал.
надо было так: where ((cast (tbDrivers.birthday as date) + 21915)< :DateTime) and (tbDrivers.date_dismissal is null) где 21915 - кол-во дней за 60 лет с учётом вытокостных лет, с погрешностью в один, два дня. а до этого я прибавлял всего 60 дней. Кто помогал, тому сенкс |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
вообще-то тебе никто и не помогал если честно....
-------------------- |
|||
|
||||
| digital_pilot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2002 Репутация: нет Всего: нет |
что, неужели в interbase нету ниче вроде DATEDIFF в mssql? просветите, чисто для общего развития :)
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Модератор: Желательно задавать этот вопрос в отдельной теме |
|||
|
||||
| Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Это как раз вопрос по теме, тут действительно - если есть функция сравнения дат то решение нужно делать через неё, так как предложенное решение мягко выражаясь очень приблизительное. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |