2015-09-06 4 views
1

Как узнать, сколько часов и минут между Startdate_time и Enddate_time в MS Access? Прогон для лимузин-компании может закончиться на следующий день в начале AM-часов и начать время раньше. Я использую две отдельные поля на уровне таблицы, например [StartDate] [StartTime]? . Я потерял; (Часы между прогонами в MS Access

ответ

0

Поле Дата содержит, а также дни и время Вы должны 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])

Я надеюсь, это было немного полезно и не слишком сложно.

1

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 
1

Это можно сделать намного проще, используя прямой расчет:

HoursMinutes = Format(1 + Enddate_time - Startdate_time, "h:nn") 

или, если вы хотите истинное значение даты для вашего текстового поля:

Me!txtRunTime.Value = CDate(1 + Enddate_time - Startdate_time) 

Затем применить формат к этому, как вам нравится, например: h:nn