Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Даты в хранимых процедурах (FireBird 1.5)


Страницы:   1 2

Slider007 ©   (2007-06-04 06:44:00) 

Ребята есть у меня 3 переменных - d,m,y (день, месяц, год) типа integer.
Вопрос в следующим - как можно из них переменную типа Date состряпать внутри хранимой процедуры ? По сути нужно то, что делает EncodeDate в Делфи. Или UDF свой писать придется ?


Slider007   (2007-06-04 09:30:00) [21]

Нее, на самом деле я тут упростил совсем.
Задача такая:
Вносится запись (документ) в таблицу. Вносится процедурой. В процедуру передаются только значения полей. В одном из полей содержится дата, например 12.06.2007. В этой же процедуре после внесения документа считается статистика своеобразная по документам из таблицы за месяц, т.е. мне надо из даты 12.06.2007 получить две даты - 01.06.2007 и 30.06.2007 - начало и конец месяца, чтобы по ним потом делать нужный запрос.

Вот. На сайте ibase.ru скачал библиотеку udf, с помощью которой разодрал дату на d,m,y. Только толку мало от этого, т.к. как обратно в кучу собрать не знаю, а скачаная мной библиотека этого не умеет.

Можно конечно в процедуру сразу передавать и начало и конец месяца вместе с самой датой документа, но это ж изврат по моему.

А может быть средствами SQLя можно сделать запрос по текущему месяцу (выбрать записи из таблицы с 01.06.2007 по 30.06.2007) имея только одну дату, например 12.06.2007 ?


Johnmen   (2007-06-04 09:09:00) [22]

CAST( d||'.'||m||'.'||y AS DATE)


Сергей М.   (2007-06-04 08:54:00) [23]

И эта процедура, надо понимать, вызывается клиентом ?
Тогда почему клиенту сразу не передать дату одним готовымпараметром типа DATE ?


Slider007   (2007-06-04 08:50:00) [24]

Ну допустим так (упростил):

SET TERM ^ ;

CREATE PROCEDURE CALC_DATE (
   d integer,
   m integer,
   y integer)
returns (
   dt date)
as
begin

  dt = ...

 suspend;
end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE CALC_DATE TO SYSDBA;


Сергей М.   (2007-06-04 08:19:00) [25]


> есть у меня 3 переменных


Где эти переменные объявлены ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо