![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Даты в хранимых процедурах (FireBird 1.5)
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 переменных
Где эти переменные объявлены ?