Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Работа с типом INTERVAL   Найти похожие ветки 

 
Деня   (2006-09-12 20:18) [0]

Мастера, подскажите такую вещугу :

каким образом отнять интервал времени (например, 30 минут)
от даты/ времени в SQL (FIBPLUS + FIREBIRD) .  
Вопрос банальный, но что-то не выходит

Должно быть что-то типа (там) :

X.DATETIME_ - INTERVAL "00:30:00"

P.S. После INTERVAL еще пишется MINUTE TO SECOND или что-то вроде того

СПАСИБО ВСЕМ ЗА БУДУЩИЕ ВАШИ ПОДСКАЗКИ !


 
Desdechado ©   (2006-09-12 21:26) [1]

1 мин = 1/24/60 суток


 
Деня   (2006-09-12 23:01) [2]

А конкретнее ?


> 1/24/60 суток


Такой маской задается интервал дат.
Если можно так задавать время, то какие использовать спецификаторы ?


 
kaif ©   (2006-09-12 23:38) [3]

А я вот замечал, что IB при работе с типом TIME единицей считает 1 секунду (в SQL-запросе)
Точно не помню - редко работаю с этим типом данных.


 
atruhin ©   (2006-09-13 07:15) [4]

Смотри статью - "Mathmatical operations on Time and Timestamp data"
на сайте Борланда


 
Виталий Панасенко   (2006-09-13 12:22) [5]

DataSet.FieldByName("DTDIF").AsDateTime :=
 DataSet.FieldByName("DT").AsDateTime - StrToDateTime("00:30:00");
DTDIF  вычисляемое поле,
DT - поле типа TIMESTAMP


 
atruhin ©   (2006-09-13 14:41) [6]

Насколько я понял автору нужны операции с датой временем на сервере.


 
Johnmen ©   (2006-09-13 14:51) [7]

<DATETIME type field/variable> - 30*(1/24/60)


 
atruhin ©   (2006-09-13 15:22) [8]

> [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;


 
Деня   (2006-09-13 15:33) [9]

Мужики, спасибо!

Дам свои комменты. Кому-то , может, пригодится.


>  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()


 
Johnmen ©   (2006-09-13 16:04) [10]


> atruhin ©   (13.09.06 15:22) [8]
> > [7] Johnmen ©   (13.09.06 14:51)
> Неправильно, проверял.


Я разве что-то говорил про TIMESTAMP? Вроде бы нет...:)


 
Johnmen ©   (2006-09-13 16:06) [11]

И ещё http://sql.ru/forum/actualthread.aspx?tid=135087



Страницы: 1 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1161901075
DmitrichJ
2006-10-27 02:17
2006.11.12
Взаимодействие между дочерним окнами.


2-1161834050
LexXL
2006-10-26 07:40
2006.11.12
BeforeNavigate


15-1161682273
boriskb
2006-10-24 13:31
2006.11.12
HTML страницы ошибок


6-1151011930
Rembo
2006-06-23 01:32
2006.11.12
WebBroker и post


15-1161626515
Layner
2006-10-23 22:01
2006.11.12
А кто знает, как троллейбусы перекл. с ветки на ветку?