Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Изменение даты в хранимой процедуре / 9 сообщений из 9, страница 1 из 1
25.07.2003, 14:46
    #32218330
gray_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Есть переменная типа TIMESTAMP. Как в ХП присвоить другой переменной такого же типа дату первой переменной, а время к примеру 9:00;
...
Рейтинг: 0 / 0
25.07.2003, 15:00
    #32218353
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Можно вот к примеру так:
Код: plaintext
1.
   DT = '01/01/2003' ||' '|| '09:00';
...
Рейтинг: 0 / 0
25.07.2003, 15:06
    #32218360
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Можно ещё так

create procedure SP_DATE(
dt_in timestamp
) returns (
dt_out timestamp
) as
begin
...
...
...
dt_out = cast((cast(cast(:dt_in as date) as varchar(31)) || ' 09:00') as timestamp);
suspend;
end

Например dt_in равен 25.07.2003 10:30:00
тогда dt_out будет 25.07.2003 09:00:00
...
Рейтинг: 0 / 0
25.07.2003, 15:13
    #32218377
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Или так

AS
declare variable tmp time ;
begin
tmp = '09:00';
dt_out = cast(:dt_in as date) + :tmp;

suspend;
end

Протестировал оба варианта на IB 6.5 работают оба.
Первый вариант придумал на вскидку, второй - немного подумав.
...
Рейтинг: 0 / 0
25.07.2003, 15:20
    #32218394
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Текущая дата + 9 часов

dt = current_date ||' '|| '09:00';
...
Рейтинг: 0 / 0
25.07.2003, 15:53
    #32218463
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Dnico! current_date это если не ошибаюсь date .
А ему надо в общем виде из какого-то любого timestamp выцепить date и обнулить time , затем прицепить новый time и соответственно получить новый timestamp .
Так я понял поставленную задачу.
...
Рейтинг: 0 / 0
25.07.2003, 16:01
    #32218484
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Ну скорее всего именно так.

Единственное замечание

dt_out = cast(:dt_in as date) + :tmp;

Не будет работать - надо обязательно || и перед временем пробел добавлять.
...
Рейтинг: 0 / 0
25.07.2003, 16:15
    #32218502
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
>> Не будет работать - надо обязательно || и перед временем пробел добавлять.

Я понимаю, что выглядит весьма экстравагантно.
Но перед тем как опубликовать в конференции я проверил в IBExpert.
Сработало чёрт возьми и без пробела. А вот в первом варианте где через varchar пробел действительно нужен и он там есть перед 09. Т.е. || '_09'
...
Рейтинг: 0 / 0
25.07.2003, 16:19
    #32218510
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение даты в хранимой процедуре
Пробел был бы нужен если переменная : tmp была бы обьявлена varchar , а я её обьявил как time . А вот присваиваю ей строку.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Изменение даты в хранимой процедуре / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]