Как узнать, сколько часов и минут между Startdate_time и Enddate_time в MS Access? Прогон для лимузин-компании может закончиться на следующий день в начале AM-часов и начать время раньше. Я использую две отдельные поля на уровне таблицы, например [StartDate] [StartTime]? . Я потерял; (Часы между прогонами в MS Access
ответ
Поле Дата содержит, а также дни и время Вы должны StartDate и EndDate
Для расчета дней часов и минут в VB модуль, содержащий следующие функции:
Public Function CountDays(EndDate, StartDate)
CountDays = Fix(EndDate - StartDate)
End Function
Public Function HourPart(EndDate, StartDate)
HourPart = Fix(((EndDate - StartDate) - CountDays(EndDate, StartDate)) * 24)
End Function
Function RemainHour(EndDate, StartDate)
RemainHour = ((EndDate - StartDate) - CountDays(EndDate, StartDate)) * 24 - HourPart(EndDate, StartDate)
End Function
Public Function MinPart(EndDate, StartDate)
MinPart = Round(RemainHour(EndDate, StartDate) * 60)
End Function
.
Используйте эти функции в запросе. Вместо имени поля введите еЕ Duration_Days: countdays([EndDate];[StartDate])
или Duration_hours: hourpart([EndDate];[StartDate])
или Duration_minutes: Minpart([EndDate];[StartDate])
Я надеюсь, это было немного полезно и не слишком сложно.
Access VBA имеет встроенную функцию под названием DateDiff
:
DateDiff("n", StartDateTime, EndDateTime)
покажет разницу в минутах между двумя Date
значениями.
(которые содержат дату и время, как уже сказано Буркхард в his answer)
Вы можете либо позвонить DateDiff
непосредственно в запросе, чтобы получить разницу в минутах.
Или, если вы хотите показать что-то вроде «1:15 часов», вы можете обернуть его в функцию, как это:
Public Function DateDiffHours(StartDateTime As Date, EndDatetime As Date) As String
Dim Minutes As Integer
Minutes = DateDiff("n", StartDateTime, EndDatetime)
DateDiffHours = Fix(Minutes/60) & ":" & Right("00" & Minutes Mod 60, 2) & " hours"
End Function
Это можно сделать намного проще, используя прямой расчет:
HoursMinutes = Format(1 + Enddate_time - Startdate_time, "h:nn")
или, если вы хотите истинное значение даты для вашего текстового поля:
Me!txtRunTime.Value = CDate(1 + Enddate_time - Startdate_time)
Затем применить формат к этому, как вам нравится, например: h:nn