powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование строки в timestamp в хранимой процедуре
5 сообщений из 5, страница 1 из 1
Преобразование строки в timestamp в хранимой процедуре
    #38405179
vladgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Я новичок в создании хранимых процедур и еще практически не имею опыта работы с ними. Вопрос может быть наивен :-), но ....

Firebird 2.5

Делаю хранимую процедуру, которая проверяет время в поле типа TIMESTAMP и при необходимости округляет его до кратных значений, например 5, 10, 15 и т.д. минут.
Выделяю нужные мне элементы даты с помощью EXTRACT
и получаю
Код: plsql
1.
2.
           
 Date1=cast(tmp2 as date);


tmp2 это varchar(30)
Это работает
Дальше делаю тоже самое с временем
Код: plsql
1.
 Time1 = cast(tmp2 as time);


Это тоже работает, а вот как из этого получить в переменную типа TIMESTAMP значение у меня не получается.
Может есть более легкий способ, но почитав инет и этот форум не нашел.
Подскажите пожалуйста.

Мне нужно чтобы уже поправленная дата и время дальше участвовали в сравнении с переменной типа TIMESTAMP и поведение этого сравнения было как при сравнении "даты и времени" с "датой и временем".


Спасибо.
...
Рейтинг: 0 / 0
Преобразование строки в timestamp в хранимой процедуре
    #38405186
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgulЯ новичок в создании хранимых процедур и еще практически не имею опыта
работы с ними.
В таком случае тебе, наверное, будет проще написать UDF. Ведь на каком-нибудь
компилируемом языке ты писать программы умеешь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строки в timestamp в хранимой процедуре
    #38405335
vladgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Dimitry Sibiryakov: Ведь на каком-нибудь компилируемом языке ты писать программы умеешь?..
Это конечно, да. :-)

Но теперь по сути вопроса, это нельзя сделать? или просто нужно знать КАК это сделать? (Без UDF)
Т.е. date + time, чтобы получилось timestamp.
Возможно ли такое преобразование?
Или из varchar сразу в timestamp (вот с этим возникли проблемы, по отдельности as date и as time все конвертировалось, a вот в timestamp ругалось на время "09:59:59", а полная строка выглядела так: "19.09.2013 09:59:59"

P.S.
С UDF пока вообще не сталкивался и как использовать такие функции не очень представляю, какие требования и какие ресурсы потребляются, какое быстродействие и т.п. вопросы. В целом - не знаком совсем.
Что нужно для дальнейшего портирования приложения на другой комп.
...
Рейтинг: 0 / 0
Преобразование строки в timestamp в хранимой процедуре
    #38405344
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgulпо отдельности as date и as time все конвертировалось, a вот в timestamp
ругалось на время "09:59:59", а полная строка выглядела так: "19.09.2013 09:59:59"

Код: sql
1.
2.
3.
4.
5.
SQL> select cast('19.09.2013 09:59:59' as timestamp) from rdb$database;

                      CAST
=========================
2013-09-19 09:59:59.0000


Ы?

PS: А кретин, который хранит timestamp в виде строки, заслужил отдельный пендель...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строки в timestamp в хранимой процедуре
    #38405422
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPS: А кретин, который хранит timestamp в виде строки, заслужил отдельный пендель...
ну, почему же сразу кретин?

просто месье ещё не все в жизни попробовал... =)
в этом же есть свои прелести:
1) БДСМ с конвертацией туда-сюда из даты в строку и обратно;
2) секс с трудноуловимыми багами форматов конвертации почему YYYYDDMM, а не YYYYMMDD ? или YYMMDD;
3) содомия с датами, типа 30 февраля, вызванная ручной правкой строк;
4) время - это отдельная область приятных ошущений. оно бывает от 0 до 24, а бывает AM/PM. прибавляем немного содомии и получаем 13:00 AM (можно PM - ещё интереснее).
5) чуть не забыл! есть еще одна интересная поза: хранить время в формате D.M.YYYY, без лидирующих нулей в дне и месяце. а потом попытаться, к примеру, отсортировать данные в выборке по дате. Асиливший это станет настоящим махараджи!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование строки в timestamp в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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