Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как сделать сумму времени (datetime) в отчете.  [new]
philips
Member

Откуда:
Сообщений: 365
Как сделать сумму времени (datetime) в отчете. Нужно только сумма времени.
9 июн 09, 09:51    [7279230]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать сумму времени (datetime) в отчете.  [new]
Kruchinin Pahan
Member

Откуда: Екатеринбург
Сообщений: 925
philips
Как сделать сумму времени (datetime) в отчете. Нужно только сумма времени.

Вообще-то сумма времени для DateTime не определена в принципе. Суммировать можно только временные интервалы.
9 июн 09, 09:59    [7279267]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать сумму времени (datetime) в отчете.  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
philips
Как сделать сумму времени (datetime) в отчете. Нужно только сумма времени.

Извлеките время в формате ЧЧ.ММ из datetime и затем суммируйте, например так:
FUNCTION SumTime (m.lTime1, m.lTime2)
*-- Суммируем два времени в формате ЧЧ.ММ

LOCAL m.lnMinSum, m.lnHourSum, m.lnSum

IF m.lTime1 = 0.00
	m.lnSum = m.lTime2
ELSE
	IF m.lTime2 = 0.00
		m.lnSum = m.lTime1
	ELSE
		m.lnHourSum = INT(m.lTime1) + INT(m.lTime2)
		m.lnMinSum = (m.lTime1 - INT(m.lTime1))*100 + (m.lTime2 - INT(m.lTime2))*100
		IF m.lnMinSum >= 60
			m.lnHourSum = m.lnHourSum + 1
			m.lnMinSum = INT(m.lnMinSum - 60)
		ENDIF
		m.lnSum = VAL(ALLTRIM(STR(m.lnHourSum)) + "." + PADL(INT(m.lnMinSum), 2, "0"))
	ENDIF
ENDIF
RETURN (m.lnSum)
ENDFUNC
С уважением, Алексей
9 июн 09, 10:25    [7279394]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать сумму времени (datetime) в отчете.  [new]
Tohan_ORA
Member

Откуда:
Сообщений: 148
philips
Как сделать сумму времени (datetime) в отчете. Нужно только сумма времени.


Если очень хочется то можно проссумировать и время :-):
FOR i=0 TO 2
   for j=0 to 20
     insert into ct values(DATEtime()+j+60*60*24*i)
   endfor
endfor

SELECT SUM(CAST(TTOC(dt,1) as n(20))) FROM ct
9 июн 09, 15:36    [7281575]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить