Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.03.2017
Сообщений: 8
1

Запросы: длительность звонка в минутах

30.04.2017, 22:02. Показов 1588. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
необходимо создать запрос
--имеется дата начала и дата конца разговора
--из таблицы необходимо найти длительность звонка в минутах,желательно типа в форме выражение1- выражение2

не знаю как правильно писать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2017, 22:02
Ответы с готовыми решениями:

Как определить длительность музыкальной композиции в минутах и секундах используя библиотеку bass?
Как определить длительность музыкальной композиции в минутах и секундах используя библиотеку bass?...

Длительность выполнения одной операции в минутах, Сколько операций можно выполнить за указанное время
Написать программу: Длительность выполнения одной операции в минутах, Сколько операций можно...

Как вычислить длительность в минутах по разности между временем в формате - ЧЧ1:ММ1 - ЧЧ2:ММ2?
В textBox1 вносится начальное время - 8:55 (или 08:55) В textBox2 вносится конечное время - 9:02...

Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах
Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное...

7
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.04.2017, 22:22 2
Выражение в минутах между датами:
Visual Basic
1
datediff("m", [ПолеМеньшейДаты], [ПолеБольшейДаты]
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,477
30.04.2017, 22:30 3
Функция Format (Visual Basic для приложений)

Что-то вроде:
= Format([Время окончания]-[Время начала];"nn:ss")

Добавлено через 4 минуты
Но звонок может длиться и час и более - тогда:
= Format([Время окончания]-[Время начала];"hh:nn:ss")
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.04.2017, 22:31 4
Ошибся в параметре . Надо не "m", а "n". "m" это в месяцах
Visual Basic
1
datediff("n", [ПолеМеньшейДаты], [ПолеБольшейДаты]
1
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,477
30.04.2017, 22:50 5
Ну или так, как предложил ув. mobile, - шас, кстати, потестю как быстрее - для общего (моего) развития...

Добавлено через 15 минут
Если кому интересно вот результаты:
Visual Basic
1
2
3
4
5
6
7
8
---------------------------------------------------------
Тест-1 (10 000 000 повт.) работал: 00:00:11
Тест-2 (10 000 000 повт.) работал: 00:00:07
 
---------------------------------------------------------
Тест-1 (100 000 000 повт.) работал: 00:01:58
Тест-2 (100 000 000 повт.) работал: 00:01:06
---------------------------------------------------------
Расшифровка:
Тест-1 = DateDiff ...
Тест-2 = Format ...

Комментарии, как говориться, излишни ...
Но если кол-во обрабатываемых записей меньше "лимона" - это всё не имеет никакого смысла - так... ради любопытства только.
2
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.04.2017, 22:58 6
Eugene-LS, основной вопрос не в скорости. Если нужна длительность именно в минутах, то формат ее не даст. Ограничиться 60 минутами, а дальше часы, дни.
1
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,477
01.05.2017, 00:55 7
Цитата Сообщение от mobile Посмотреть сообщение
то формат ее не даст
Точно!
Не знал.
Признаю свою ошибку. Спасибо за науку.
Не ожидал от Format такого
... буду знать

Добавлено через 5 минут
Странно всё это, насколько помню MSA хранит Дату-Время в Дабле, и там целая часть - это номер дня, а дробная = время от рождества компового.
И казалось бы = простая арифметика вычесть из конца начало и вывести результат в заданном формате - а не работает.
Век живи - век учись ....

Добавлено через 1 час 1 минуту
mobile, я тут увлёкся этой темой (выходной + водка + закуска + наличие времени)
У меня челюсть на "клаву" упала когда я исполнил следующее:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub TestTwo()
 
Dim t As Date, tEnd As Date, result As Date
Dim v As Variant
    
'Тест 01 + один день ...
    Debug.Print "Тест 01----------------------------------"
    t = Now
    tEnd = t + 1
    Debug.Print "Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print Format(result, "hh:nn:ss")
    Debug.Print CDbl(tEnd - t)
    Debug.Print Format(CDbl(tEnd - t), "hh:nn:ss")
 
'Тест 02 + один день и несколько часов - с дробной частью ...
    Debug.Print "Тест 02----------------------------------"
    t = Now
    tEnd = DateSerial(Year(Date + 1), Month(Date + 1), Day(Date + 1))
    tEnd = t + 1.267889
    Debug.Print "Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print Format(result, "hh:nn:ss")
    Debug.Print CDbl(tEnd - t)
    Debug.Print Format(CDbl(tEnd - t), "hh:nn:ss")
    Debug.Print "ТестEnd----------------------------------"
 
End Sub
Не хилые "коленца" VBA тут выкидывает ...

Добавлено через 19 минут
Цитата Сообщение от mobile Посмотреть сообщение
Если нужна длительность именно в минутах, то формат ее не даст
Небольшая правка - и всё пашет как надо.
Модераторам - я не мусорю на форуме - я ищу истину (как могу)

если так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub TestTwo()
 
Dim t As Date, tEnd As Date, result As Date
Dim v As Variant
    
'Тест 01 + один день ...
    Debug.Print "Тест 01----------------------------------"
    t = Now
    tEnd = t + 1
    Debug.Print "Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print Format(result, "hh:nn:ss")
    Debug.Print CDbl(tEnd - t)
    Debug.Print "Разница: " & v \ 60 & " целых часов" & " и "; Format(CDbl(tEnd - t), "hh:nn:ss") & " часов - минут - секунд"
 
'Тест 02 + один день и несколько часов - с дробной частью ...
    Debug.Print "Тест 02----------------------------------"
    t = Now
    tEnd = t + 1.267889
    Debug.Print "Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print Format(result, "hh:nn:ss")
    Debug.Print CDbl(tEnd - t)
    Debug.Print "Разница: " & v \ 60 & " целых часов" & " и "; Format(CDbl(tEnd - t), "hh:nn:ss") & " часов - минут - секунд"
    Debug.Print "ТестEnd----------------------------------"
 
End Sub
И Format (сволочь) отрабатывает как надо ...

Всё.
Спасибо за внимание.

Добавлено через 17 минут
Окончательный вариант:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub TestTwo()
 
Dim t As Date, tEnd As Date, result As Date
Dim v As Variant
    
'Тест 01 + один день ...
    Debug.Print "Тест 01----------------------------------"
    t = Now
    tEnd = t + 1
    Debug.Print "      Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print "      Разница: " & v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print "      " & Format(result, "hh:nn:ss")
    Debug.Print "      Разница в днях (дробь): " & CDbl(tEnd - t)
    Debug.Print "      Разница: " & v \ 1440 & " целых дней и " & Format(CDbl(tEnd - t), "hh:nn:ss") & " часов:минут:секунд"
 
'Тест 02 + один день и несколько часов - с дробной частью ...
    Debug.Print "Тест 02----------------------------------"
    t = Now
    tEnd = t + 1.267889
    Debug.Print "      Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print "      Разница: " & v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print "      " & Format(result, "hh:nn:ss")
    Debug.Print "      Разница в днях (дробь): " & CDbl(tEnd - t)
    Debug.Print "      Разница: " & v \ 1440 & " целых дней и " & Format(CDbl(tEnd - t), "hh:nn:ss") & " часов:минут:секунд"
 
'Тест 03 + несколько часов  ...
    Debug.Print "Тест 03----------------------------------"
    t = Now
    tEnd = t + 0.326788956777886
    Debug.Print "      Начало: " & t & " - конец: " & tEnd
    v = CInt(DateDiff("n", t, tEnd))
    Debug.Print "      Разница: " & v & " минут что равно: " & v \ 60 & " целых часов"
    result = tEnd - t
    Debug.Print "      " & Format(result, "hh:nn:ss")
    Debug.Print "      Разница в днях (дробь): " & CDbl(tEnd - t)
    Debug.Print "      Разница: " & v \ 1440 & " целых дней и " & Format(CDbl(tEnd - t), "hh:nn:ss") & " часов:минут:секунд"
    Debug.Print "ТестEnd----------------------------------"
End Sub
0
0 / 0 / 0
Регистрация: 08.03.2017
Сообщений: 8
15.05.2017, 08:35  [ТС] 8
спасибо всем,но я нашел решение попроще)) Длительность разговора: Round(([Дата конца разговора]-[Дата начала разговора])*24*60)
0
15.05.2017, 08:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2017, 08:35
Помогаю со студенческими работами здесь

Определить, придёт ли ученик раньше звонка, после звонка или во время
Ребят, помогите мне разобраться написать данную программу: Расстояние от дома до школы Sкм. До...

Пересчет величины временного интервала, заданного в минутах , в величину, выраженную в часах и минутах.
Написать программу пересчета величины временного интервала,заданого в минутах , в...

Написать программу пересчета временного интервала, заданного в минутах, в величину, заданную в часах и минутах
Написать программу пересчета временного интервала, заданного в минутах, в величину, заданную в...

Написать программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах
15. Написать программу пересчета величины временного интервала, заданного в минутах, в величину,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru