|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.06.2007, 09:13 | #1 |
Регистрация: 06.06.2007
Сообщений: 9
|
Манипуляции с датой и временем.
Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000 Надо вывести допустим с Дата1 по Дата 2 такую информацию: День, Сколько времени проведено за этот день на месте... (причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел") Помогите написать запрос... Очень нужно! |
15.06.2007, 17:14 | #2 | |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
Цитата:
попробуй использовать процедуры decodeDate(Date: TDateTimer,var Year,Month,Day : Word).... она разбивает DAte на год,месяц и день.... Вместо Date используй запись с датой.... обратная фу-я Encode.... Я думаю, что отсюда нужно отталкиваться.... На выходных подумаю и напишу, если что..времени нет думать..Извини, зай
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
|
17.06.2007, 11:55 | #3 | |
Регистрация: 30.11.2006
Сообщений: 3
|
Цитата:
|
|
23.06.2007, 21:32 | #4 |
Регистрация: 06.06.2007
Сообщений: 9
|
Да, вытащить из БД и отправить в отчет
|
24.06.2007, 07:54 | #5 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Опиши нормально структуру по крайней мере этих двух таблиц. Со связями. Лень выдумывать абстрактный пример
|
24.06.2007, 17:07 | #6 | |
Регистрация: 06.06.2007
Сообщений: 9
|
Цитата:
Дата1 и Дата2 задаются при формировании отчета, типа "Выберете период.." |
|
25.06.2007, 01:45 | #7 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Я понимаю, конечно, что это не ответ на твой вопрос в прямом смысле. Но все-таки... А почему бы не использовать вычисляемые поля? Простенько и со вкусом... Боюсь что в одном SQL-запросе такое реализовать не получится и придется писать хранимую процедуру. А я даже не знаю с какой СУБД ты работаешь...
|
25.06.2007, 19:40 | #8 |
Регистрация: 06.06.2007
Сообщений: 9
|
БД SQL 2005, а можно на счет хранимой процедуры поподробней
|
26.06.2007, 10:56 | #9 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
ну , процедура - это такая штука, которая выполняется на сервере... А в клиентскую часть возвращаются параметры которые указаны (out), в свою очередь клиент передает какие-то данные в процедуру(in)
Как я понимаю , тебе предлагают передавать в процедуру свою дату, а в самой процедуре обрабатывать ее... В процедуре есть циклы , условия и т.д... Короче, все , что нужно для обработки данных... Прикольная штука... Применяется для уменьшения трафика в сети и нагрузки на клиентскую часть... Только на сколько я знаю, нужен нормальный ODBC , чтобы поддерживал процедуры.... Просто старые версии не поддреживают....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
26.06.2007, 13:41 | #10 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
давай я тебе напишу пример своей процедуры ..Простенькой, но по ней можно раздуплиться, что такое процедуры... Эта процедура считает МАКсимум кол-во отгруженного товара со склада.... В качестве входных данных - имя товара, а выход максимум товара:
create procedure find_max_kol(in_tovar varchar(20)) returns(max_kolvo integer) as begin Select Max(kolvo) from rashod where tovar = :in_tovar into :max_kolvo; suspend; // передача данных end; в Query1.sql прописываешь: select * from find_max_kol(aram1); по нажатию кнопки: begin query1.close; qury1.parambyname('param1').value:= table.fieldbyname('Tovar').value; query1.open; end; В твоей ситуации нужно передавать данные Время1(ушел) и Время2(пришел), а в процедуре расчитывать Время3(проведенное) и возвращаешь ее. Например: create procedure find_time(in_time1 time, in_time2 time) returns(time_rab time) as begin time_rab = :in_time1 - in_time2; suspend; // передача данных end; Дбавляешь TstoredProce и Ttable.... и потом по событию: storedProce1.unPrepare; storedProce1.PramByName('in_time2') .value := table1.fieldByname('Дата_входа').va lue; storedProce1.PramByName('in_time1') .value := table1.fieldByname('Дата_выхода').v alue; storedProce1.prepare; storedProce1.execproc; lable1.caption := timeTostr(storedProce1.paramByName( 'time_rab').value);
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Последний раз редактировалось Pitbull; 26.06.2007 в 14:02. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с датой | xDjarx | БД в Delphi | 38 | 02.05.2009 14:21 |
Работа со временем. | ekzi | Общие вопросы C/C++ | 1 | 22.07.2008 15:29 |
Работа с датой | Dunpeal | Общие вопросы Delphi | 5 | 15.05.2008 12:05 |
Работа со временем | joker | Общие вопросы Delphi | 4 | 20.04.2008 15:01 |
массив сохранение информации и манипуляции | oblom | Общие вопросы C/C++ | 19 | 04.02.2008 02:28 |