Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Разница двух DateTime


Автор: tikitiki 7.9.2005, 12:46
Кто-нибудь может сказать, что в результате
разницы двух переменных типа DateTime получается?
Хотелось бы научиться манипулировать нормально
этим типом. Я его использую, но наугад и не совсем наверное
правильно. Как определить хотя бы разницу между двумя
датами и как результат применить для умножения (например,
человек зарабатывает 1 коп/день.Как определить сколько
он заработал с 12:00 до 13:00 в один и тот же день или например
с 12:30 01.01.05 до 13:30 02.02.05. Я понимаю, что надо разность
даты и времени вычислить, затем 1 коп. умножить на то что
получилось. Но опять же не пойму разность в каком виде у меня
будет). И ещё. Я разность даты и времени всё же использую
в коде и в SQL, но у меня сомнения возникают насчёт
того, что у меня на границах интервала времени получается и правильно
ли я определяю интервал времени? Например у меня такой запрос к БД:
SELECT Numnmb,
SUM(Numcost*(c.Datetwo-c.Dateone))
as Summa1
FROM client c,number n
WHERE
(c.Dateone>="1.1.5 12:0" AND c.Datetwo<="31.12.5 12:0")
and c.Numnmb=n.Numnmb
GROUP BY Numnmb
В запросе Datetwo и Dateone -поля из одной таблицы типа DataTime,
Datetwo -отвечает за конечную дату интервала времени, Dateone-за
начальную. Не углубляясь в запрос, можно сказать-правильно я использую
тип DataTime для расчётов в контексте выше сказанного?


Автор: tikitiki 7.9.2005, 17:10
Я коснулся по-моему слишком большого вопроса. Попробую упростить. Избегу ли я ошибок, если пользоваться запросами наподобие того, что выше? Вычитал, что DateTime представляет из себя на самом деле тип float, у которого целая часть-дата, дробная -время. Хотелось бы поконкретней.

Автор: Snowy 7.9.2005, 19:42
Целая часть - кол-во дней прошедших с 30.12.1899.
Дробная - кол-во секунд с начала суток.

Автор: SergeBS 8.9.2005, 10:46
Народ, не путайте две разницы. В Делфи - да, целая часть - дни, дробная - соответственно дробная часть дня. Не количество секунд.
Но у серверов форматы даты - не такие. И поля называются по-разному. Например:
MS SQL - smalldatetime - дата и время с точностью до 1 мин. с 1.01.1900 по 6.06.2079
datetime - дата и время с точностью 3.33 мс с 1.01.1753 по 31.12.9999.
И потому дата в запросе и дата в результате чтения поля - отличаются.
Прочтешь поле из Делфи-клиента - получишь Делфи-формат.
Напишешь запрос на вычисление чего-то на сервере - получишь для вычисления даты в формате сервера.

tikitiki
Читай доку по серверу насчет формата даты и функций, работающих с ней.

Автор: tikitiki 8.9.2005, 15:14
Яснее просто не бывает. Беру на вооружение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)