Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получение разницы между датами в нужном формате

375
20 июня 2007 года
dominator
199 / / 16.10.2003
Здравствуйте!
Мне нужно сделать запрос в котором будет рассчитываться разница между двумя датами (БД ACCESS).
Содержимое полей:
 
Код:
id---DateBegin-------------DateEnd----------
6--18.06.2007 17:22:45--18.06.2007 17:23:47


Разница между датами в примере: 1 минута 2 секунды.
Соответственно запрос:
 
Код:
SELECT DateDiff('s', DateBegin, DateEnd) as [Разница] FROM Table1 WHERE id = 6

Возвратит число 62 (количество секунд).

Собственно вопрос...
Нужно получить разницу в формате: 00:01:02. Существует ли возможность сделать такое стандартными средствами, или же свою процедуру писать придется? Возможно ли это сделать в самом запросе (опять же функцией какой-либо)?
303
21 июня 2007 года
makbeth
1.0K / / 25.11.2004
В стандартном SQL Access'а функции для нужного тебе форматирования нет. Единственный вариант, который приходит в голову - это применять форматирование на этапе прорисовки данных в гриде (ты же используешь DBGrid, не так ли?). Там можно форматировать данные как душе угодно. Смотри в хелпе по гриду события OnDrawColumnCell/OnDrawDataCell.
375
21 июня 2007 года
dominator
199 / / 16.10.2003
Цитата: makbeth
В стандартном SQL Access'а функции для нужного тебе форматирования нет. Единственный вариант, который приходит в голову - это применять форматирование на этапе прорисовки данных в гриде (ты же используешь DBGrid, не так ли?). Там можно форматировать данные как душе угодно. Смотри в хелпе по гриду события OnDrawColumnCell/OnDrawDataCell.



А MS SQL Server? Есть там подобная функция форматирования?

375
22 июня 2007 года
dominator
199 / / 16.10.2003
Цитата: makbeth
В стандартном SQL Access'а функции для нужного тебе форматирования нет. Единственный вариант, который приходит в голову - это применять форматирование на этапе прорисовки данных в гриде (ты же используешь DBGrid, не так ли?). Там можно форматировать данные как душе угодно. Смотри в хелпе по гриду события OnDrawColumnCell/OnDrawDataCell.


Как мне изменить значение ячейки? К примеру поле содержит значение '01':

 
Код:
--id---Наименование--Количество дней--
--1----{Наименование}--01


нужно отобразить '1 день' на момент прорисовки
 
Код:
--id---Наименование--Количество дней--
--1----{Наименование}--1 день


Пробую так:
 
Код:
if(Column.Title.Caption = 'Количество дней') then begin
  Column.Field.Text := '1 день';
end;

в событии OnDBGrid_MainDrawColumnCell()
Ругается на то, что не может изменить данные, что правильно, конечно: изменить он не может.
А как же мне переписать отображаемое значение в самом гриде?
25K
24 июня 2007 года
Sax
11 / / 14.04.2007
Количество лет, месяцев и дней между двумя датами по ссылке http://alglib.sources.ru/dates/difdmy.php
Вызывается и используется примерно так

DecodeDate(Form1.DateTimePicker1.Date,y1,m1,d1);
DecodeDate(Form1.DateTimePicker2.Date,y2,m2,d2);
DMYBetween(d1,m1,y1,d2,m2,y2,d,m,y);

Переменные в итоге типа integer
Можно изменить под свои потребности
303
25 июня 2007 года
makbeth
1.0K / / 25.11.2004
Dominator, когда я говорю - прорисовывать, то это именно вывести текст функциями рисования ;) Сам текст можно сформировать из значения текущего поля каким угодно образом.
Вот смотри: в обработчике тебе передается Rect - область прорисовки (прямоугольник, в котром надо рисовать), Column - ну ты уже понял, State - состояние ячейки (с помощью этого свойства ты можешь определить, в каком состоянии находится текущая ячейка - выделенная, в фокусе и т.д.)
Используй DBGrid.Canvas в этом обработчике для прорисовки.
375
25 июня 2007 года
dominator
199 / / 16.10.2003
Спасибо всем за помощь! Попробую разобраться.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог