Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/98: Рейтинг темы: голосов - 98, средняя оценка - 4.88
10 / 10 / 0
Регистрация: 05.01.2011
Сообщений: 151
1

Количество дней между двумя датами. Как определить?

01.12.2011, 02:16. Показов 18323. Ответов 9
Метки нет (Все метки)

Подскажите есть дата отезда(тип данных дата\время) и дата приезда(тип данных дата\время) как найти количество дней(тип данных числовой)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2011, 02:16
Ответы с готовыми решениями:

Высчитать количество дней между двумя датами, ошибка: задано значение для операции без оператора
Всем привет))) Помогите разобраться в ошибке, нужно высчитать кол-во дней между двумя...

Вычисление количества дней между датами
Добрый день! Не могу решить вполне себе понятную задачу: Есть таблица в Access, в которой...

События между двумя датами
Добрый день! Есть перечень изделий - каждое имеет сертификат с датой регистрации. Помогите...

Отчет между двумя датами
в базе данных Борей есть отчет где выводится информация между двумя датами которые определяются в...

9
Эксперт MS Access
6662 / 4272 / 263
Регистрация: 12.08.2011
Сообщений: 12,459
01.12.2011, 02:32 2
см datediff alt+f11 datediff F1:
0
Миниатюры
Количество дней между двумя датами. Как определить?  
1172 / 625 / 37
Регистрация: 30.05.2010
Сообщений: 712
01.12.2011, 23:52 3
Лучший ответ Сообщение было отмечено как решение

Решение

Здравствуйте vitik.
дата в MS Access храниться в числовом значении специального формата:
целая часть - кол-во дней от 30.12.1899
дробная часть - время от начала суток
исходя из этого "..найти количество дней.." можно подобной конструкцией:
CLng([дата приезда]) - CLng([дата отъезда])

Евгений.
4
10 / 10 / 0
Регистрация: 05.01.2011
Сообщений: 151
03.12.2011, 01:31  [ТС] 4
Teslenko_EA, спасибо попробую я вба воше не шарю восновном С++ а базу задали в универе
0
535 / 365 / 16
Регистрация: 17.12.2009
Сообщений: 965
03.12.2011, 22:33 5
Так можно вообще все просто оформить. В аксессе достаточно отнять одну дату от другой и все в запросе типа ([дата2]-[дата1]) AS RAZNIZA и будет разница в виде количества дней. Чтобы явно загнать это в числовой вариант можно перед скобками поставить функцию int(ваше выражение).

Добавлено через 1 минуту
Это в случае если у автора расчет выполняется в запросе.
0
1172 / 625 / 37
Регистрация: 30.05.2010
Сообщений: 712
04.12.2011, 12:45 6
to Сергей1980.
здравствуйте Сергей, огорчу Вас но выражение ([дата2]-[дата1]) AS RAZNIZA не подойдет для решения этой задачи, т.к. у автора "..тип данных дата\время..", а считать необходимо только дату.

#04/12/2011 12:00:00# - #03/12/2011 12:00:01# - вернет 0 целых (0 дней), а событие было вчера.
то-же самое относительно int(ваше выражение), INT округляет к целому вниз.
Именно по этому необходимо выполнять вычитание предварительно выполнив округление:
CLng([дата приезда]) - CLng([дата отъезда]),
а так-как даты превышают 16.09.1989 (32767 - предельное значение Int) используется целочисленное значение Long (конвертация CLng).
Евгений.
1
535 / 365 / 16
Регистрация: 17.12.2009
Сообщений: 965
04.12.2011, 13:30 7
Евгений, спасибо за ответ! Не посмотрел в самом начале, что у автора еще и время! Пользуясь случаем хочу задать вопрос, а как считать правильно количество часов? У меня примерно похожий вопрос был бы, но задам в текущей теме тоже. Есть аналогично два поля, дата/время. Начало выгрузки на складе и окончание выгрузки на складе. Разность нужно выразить в количестве часов. То есть дельта должна показывать продолжительность выгрузки в часах. Как действовать в этом случае?
0
176 / 61 / 3
Регистрация: 17.11.2011
Сообщений: 318
04.12.2011, 17:01 8
--> Сергей1980
Format([Начало выгрузки на складе] - [окончание выгрузки на складе], "h")
Функция Format() вернёт продолжительность выгрузки в часах в виде строковой переменной. Дальше можете конвертировать её в нужный вам формат числа, например с помощью Clng().

Тут, правда есть одно "НО". Как вам нужно учитывать "неполные часы". Например, выгрузка длилась 1 час и 25 мин. или 1 час и 45 мин. В какую сторону вам нужно округлять данные?
1
535 / 365 / 16
Регистрация: 17.12.2009
Сообщений: 965
04.12.2011, 18:55 9
Большое спасибо за ответ! По поводу округления могу сказать, что лучше дробную часть переводить в минуты. То есть к примеру 38 часов 44 минуты. Как понимаю в Format можно сделать что то типа
SQL
1
Format([v2]-[v1]"h-m")
?
0
1172 / 625 / 37
Регистрация: 30.05.2010
Сообщений: 712
05.12.2011, 00:31 10
Сергей1980, Вашу задачу можно решать с использованием функции:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Function compareTime$(d1, d2)
Dim j%, h%
If Not IsDate(d1) Then
ElseIf Not IsDate(d2) Then
Else
    j = CInt(d2 - d1) ' дни
    h = CInt(Format(d2 - d1, "h")) + j * 24 'часы
    compareTime = Format(d2 - d1, "nn") 'минуты
    compareTime = Format(h, "00")+ ":" + compareTime
End If
End Function
=compareTime([Начало выгрузки на складе]; [окончание выгрузки на складе])
Евгений.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2011, 00:31

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Подсчет выходных между двумя датами
Пожалуйста, чайник я пока. Делаю базу для учета своей работы. Есть форма где я заполняю...

Авто-подсчет дней между датами и авто-сохранение результата в таблицу
Доброго времени суток! Как можно создать авто подсчет дней между датами чтобы результат...

Как определить количество дней между двумя датами, исключая выходные
Люди, подскажите как можно определить количество дней между двумя датами, исключая выходные? я...

Определить количество дней между двумя датами
Всем привет. Знаю была уже подобная задачка решена ранее, и не раз: Пользователь вводит две даты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.