Страница: 1 |
Страница: 1 |
Вопрос: Как найти разницу в минутах
Добавлено: 08.05.07 16:30
Автор вопроса: Andrew_nik
Есть два столбца с временем:
9:10 и 10:50 - надо найти разницу в минутах.
Подскажите какая функция может помочь в вычислении разницы! т.е. чтобы она возвращала значение 100 минут
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 08.05.07 16:34
datediff
Номер ответа: 2
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #2
Добавлено: 08.05.07 17:02
Написал следующее.
Возвращает значение 0:00:00 вместо 100 минут.
Что можно сделать?
Public Sub Минуты()
Dim d As Date
Dim d1 As Date
Dim d2 As Date
d1 = #9:30:00 AM#
d2 = #9:30:00 AM#
d = DateDiff("m", d1, d2)
MsgBox d
End Sub
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 08.05.07 17:16
Прочитать справку по datediff, обратив внимание на два пунта: тип возвращаемого значения и смысл буквы "m".
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 08.05.07 17:18
(не заметил)
Впрочем, всё это не поможет в поиске количества минут между одинаковыми датами.
Номер ответа: 5
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #5
Добавлено: 08.05.07 17:24
Вышла промашка с данными.
Прочитал справку - выбрал аргумент "n" - результат 09.04.1900. А мне надо 100 минут.
Буду благодарен за совет.
Public Sub Минуты()
Dim d As Date
Dim d1 As Date
Dim d2 As Date
d1 = #9:10:00 AM#
d2 = #10:50:00 AM#
d = DateDiff("n", d1, d2)
MsgBox d
End Sub
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 08.05.07 17:47
Ты пропустил первую часть того ответа.
Номер ответа: 7
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #7
Добавлено: 08.05.07 17:57
Не подскажешь как тип данных Variant перевести в Date?
Номер ответа: 8
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #8
Добавлено: 08.05.07 18:04
может CDate() ?
Номер ответа: 9
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #9
Добавлено: 08.05.07 18:09
А то, что там написано после Variant в скобках, гораздо важнее.
Ты не понимаешь, что 100 минут не может быть датой? :roll:
Может CDate вызывается автоматически во всёх приведённых отрезках кода. Его результатом и является 09.04.1900 (а чего вы ожидали).
Номер ответа: 10
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #10
Добавлено: 10.05.07 09:13
GSerg, ты хочешь сказать, что результата 100 минут я не получу никогда используя эту функцию?
Если все так безнадежно - то скажи хоть что можно сделать - дай подсказку!
Номер ответа: 11
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #11
Добавлено: 10.05.07 09:35
Andrew_nik, применять моск полезно.
Не применять моск, соответственно, наоборот.
Дата (тип date) - точка. Одна точка. На шкале времени. Я это сказал выше (но ты не послушал).
Отрезок (тип отсутствует!) - отрезок. Две точки, причём любые. Важно только расстояние между ними. Про причине чего типом Date это непредставимо (об этом я тоже сказал, но ты снова решил не понять).
100 - это число (а не дата). Чего именно "сто", знаешь только ты. Для компа это просто 100.
Ты так и сходил в мануал второй раз и так и не прочитал, что после Variant в скобках идёт (Long).
Соответственно, это не сподвигло тебя мысль о том, что тип возвращаемого значения - Long (потому что, наверное, мысли о Date занимали всё процессорное время, и сбить себя с этого пути ты не давал).
Ну нет слов, собственно.
Ну на.
Dim d As Long
Dim d1 As Date
Dim d2 As Date
d1 = #9:10:00 AM#
d2 = #10:50:00 AM#
d = DateDiff("n", d1, d2)
MsgBox d
End Sub
Рассмотри всё-таки вариант включения моска в ближайшем будущем.