![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с типом INTERVAL [D7, FIREBIRD]
Деня © (2006-09-12 20:18:00)Мастера, подскажите такую вещугу :
каким образом отнять интервал времени (например, 30 минут)
от даты/ времени в SQL (FIBPLUS + FIREBIRD) .
Вопрос банальный, но что-то не выходит
Должно быть что-то типа (там) :
X.DATETIME_ - INTERVAL '00:30:00'
P.S. После INTERVAL еще пишется MINUTE TO SECOND или что-то вроде того
СПАСИБО ВСЕМ ЗА БУДУЩИЕ ВАШИ ПОДСКАЗКИ !
Johnmen (2006-09-13 16:06:00) [1]И ещё http://sql.ru/forum/actualthread.aspx?tid=135087
Johnmen (2006-09-13 16:04:00) [2]
> atruhin © (13.09.06 15:22) [8]
> > [7] Johnmen © (13.09.06 14:51)
> Неправильно, проверял.
Я разве что-то говорил про TIMESTAMP? Вроде бы нет...:)
Деня (2006-09-13 15:33:00) [3]Мужики, спасибо!
Дам свои комменты. Кому-то , может, пригодится.
> TIME единицей считает 1 секунду
Вообще-то да, но лучше явно преобразовать
cast('X:XX' as time)
> Смотри статью - "Mathmatical operations on Time and Timestamp
> data"
> на сайте Борланда
Хорошая статья, идеальная для таких случаев
http://bdn.borland.com/article/28886
> DataSet.FieldByName('DTDIF').AsDateTime :=
> DataSet.FieldByName('DT').AsDateTime - StrToDateTime('00:
> 30:00');
> DTDIF вычисляемое поле,
> DT - поле типа TIMESTAMP
> <Цитата>
Такого рода программное преобразование очень удобно делать с технологиями типа BDE, в которые значения типа DATETIME заносятся только через параметры. ( или, может, у кого-то получилось дату загнать прямо в строку-SQL ? Если так, то, пожалуйста, кусок кода )
Т.е.
stringSQL := '... WHERE DATETIME_ = :MYDATETIME';
MyDateTime := [datetime] + StrToDateTime('00:30:00'); // вычисляем
X.ParamByName('MYDATETIME').AsDateTime := MyDateTime;
У меня другая ситуация, но за совет спасибо.
А с типом INTERVAL у меня в FIREBIRD чего-то не заладилось :{
Сделал через CAST()
atruhin (2006-09-13 15:22:00) [4]> [7] Johnmen © (13.09.06 14:51)
Неправильно, проверял.
Subtract or Add a time from/to a timestamp.
How:Subtract the time from midnight, divide the result by the number of seconds in a day, take that result and add or substract it from your timestamp.
Example: This example shows what time it will be 2 hours from now.
select current_timestamp+(cast('2:00' as time)-cast('0:00' as time))/(60*60*24) from rdb$database;
Johnmen (2006-09-13 14:51:00) [5]<DATETIME type field/variable> - 30*(1/24/60)
atruhin (2006-09-13 14:41:00) [6]Насколько я понял автору нужны операции с датой временем на сервере.
Виталий Панасенко (2006-09-13 12:22:00) [7]DataSet.FieldByName('DTDIF').AsDateTime :=
DataSet.FieldByName('DT').AsDateTime - StrToDateTime('00:30:00');
DTDIF вычисляемое поле,
DT - поле типа TIMESTAMP
atruhin (2006-09-13 07:15:00) [8]Смотри статью - "Mathmatical operations on Time and Timestamp data"
на сайте Борланда
kaif (2006-09-12 23:38:00) [9]А я вот замечал, что IB при работе с типом TIME единицей считает 1 секунду (в SQL-запросе)
Точно не помню - редко работаю с этим типом данных.
Деня (2006-09-12 23:01:00) [10]А конкретнее ?
> 1/24/60 суток
Такой маской задается интервал дат.
Если можно так задавать время, то какие использовать спецификаторы ?
Desdechado (2006-09-12 21:26:00) [11]1 мин = 1/24/60 суток