Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
Всем добрый день!
Возможно, для вас вопрос прозвучит тупым, но все же осмелюсь его задать.
Возникла такая необходимость - производить вычисления с временем, к примеру, определить разницу между 19:00 и 12:00 (чтобы получилось 7).
Прочитал тут:
ДАТЫ
Иногда выгодно хранить дату в целых числах Integer или Long - в минутах или секундах. Точнее, если идет речь не о дате как таковой, а о промежутках времени. Арифметические операции с датами практически невозможны. Т.е. невозможно сложить, например, время в пути автомобиля из разных строк. Но если хранить время поездки в минутах, то все складывается просто. А функция перевода минут в часы и минуты - не сложная.

И в связи с этим вопрос: приведенная цитата - это мой случай или нет? И если мой, то как сделать так, чтобы целое число понималось как время (т.е. разница 10-9,30 равнялось 0,30, а не 0,70)?
Заранее спасибо.
10 апр 06, 14:38    [2543611]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
adv
Member

Откуда:
Сообщений: 3333
simb_a
приведенная цитата - это мой случай или нет

Трудно сказать. Вы свой случай не расписали как следует.

автор
10-9,30 равнялось 0,30, а не 0,70
в цитате говорилось о хранении минут.
10 апр 06, 17:34    [2544736]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
adv
Трудно сказать. Вы свой случай не расписали как следует.

Мне для учета рабочего времени сотрудников по времени прихода на работу и времени ухода нужно определять, сколько сотрудник отработал за день (разницу между двумя указанными временами). Далее эта разница будет использоваться в перекрестном запросе, а там, как я понял, тип Дата не подходит.
11 апр 06, 09:11    [2546254]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
посмотрите функцию DateDiff. Можете хранить время как тип Date, получить, к примеру, разницу в минутах и использовать ее по своему усмотрению
11 апр 06, 09:24    [2546297]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
кккккккк
Guest
simb_a
adv
Трудно сказать. Вы свой случай не расписали как следует.

Мне для учета рабочего времени сотрудников по времени прихода на работу и времени ухода нужно определять, сколько сотрудник отработал за день (разницу между двумя указанными временами). Далее эта разница будет использоваться в перекрестном запросе, а там, как я понял, тип Дата не подходит.

Для хранения временой разницы тип "дата/время" точно не подходит. Разница - это длина отрезка. Дата/время - точка на временной шкале. Если хотите хранить разницу, нужно время переводить в десятичные дроби (сутки = 1,0) до сложения с датой. Проще хранить начало и конец отрезка, чем начало и длину.
11 апр 06, 10:05    [2546475]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
кккккккк
Для хранения временой разницы тип "дата/время" точно не подходит. Разница - это длина отрезка. Дата/время - точка на временной шкале. Если хотите хранить разницу, нужно время переводить в десятичные дроби (сутки = 1,0) до сложения с датой. Проще хранить начало и конец отрезка, чем начало и длину.

Собственно, я и хотел хранить начало и конец отрезка в таблице вида: Сотрудник, Дата, Пришел, Ушел. Но для одного из отчетов нужна такая таблица (типа перекрестного запроса) заголовок строк-сотрудник, столбцов-дата, заполнять-отработанным временем (т.е. разницей Пришел-Ушел). Как это реализовать лучше, чем используя сохраненную разницу, я не придумал. Такие уж глубокие у меня пока познания :)
11 апр 06, 10:13    [2546507]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
кккккккк
Guest
simb_a
кккккккк
Для хранения временой разницы тип "дата/время" точно не подходит. Разница - это длина отрезка. Дата/время - точка на временной шкале. Если хотите хранить разницу, нужно время переводить в десятичные дроби (сутки = 1,0) до сложения с датой. Проще хранить начало и конец отрезка, чем начало и длину.

Собственно, я и хотел хранить начало и конец отрезка в таблице вида: Сотрудник, Дата, Пришел, Ушел. Но для одного из отчетов нужна такая таблица (типа перекрестного запроса) заголовок строк-сотрудник, столбцов-дата, заполнять-отработанным временем (т.е. разницей Пришел-Ушел). Как это реализовать лучше, чем используя сохраненную разницу, я не придумал. Такие уж глубокие у меня пока познания :)

Настолько глубокие, что читать разучился?
Тебе сказали уже - функция DateDiff.
11 апр 06, 10:15    [2546515]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
кккккккк
Настолько глубокие, что читать разучился?
Тебе сказали уже - функция DateDiff.

О DateDiff я прочитал, уже читаю справку по этому поводу. Просто решил Вам ответить.
11 апр 06, 10:19    [2546533]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
В VBA сделал так
DateDiff("n", TimeIn, TimeOut)
SQL запрос ругается тут DateDiff("n", TimeIn, TimeOut)
DATEDIFF(<SQL Server datepart>, x, y)
11 апр 06, 15:53    [2548476]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
Еще раз.
В VBA сделал так
DateDiff("n", TimeIn, TimeOut)
SQL запрос ругается тут DateDiff("n", TimeIn, TimeOut)
F1:
DATEDIFF(<SQL Server datepart>, x, y)
В каком формате должно быть SQL Server datepart?
11 апр 06, 15:55    [2548494]     Ответить | Цитировать Сообщить модератору
 Re: Операции с датами  [new]
simb_a
Member

Откуда: Москва
Сообщений: 193
Вопрос снят
11 апр 06, 16:47    [2548829]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить