powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / еще раз о Dateserial
13 сообщений из 13, страница 1 из 1
еще раз о Dateserial
    #32242939
danny_u2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема в том,что я вычитая к примеру от 31.12.03 01.07.03, беру потом month от результата и получаю 7 месяцев. А мне то нужно получить 6!!
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32242948
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...
А как ты вычетаешь, а потом что-то там получаешь читать между строк???
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32242960
danny_u2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
берешь month(Dateserial(x,y))
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32242975
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда не знаю :)
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243103
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
??
DateDiff("m",#07/01/2003#,#12/31/2003#)
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243107
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4d_monster:
обрати внимание на результат
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243115
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
?(#12/31/03#-#07/01/03#)/30.5
6
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243147
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, на пальцах посчитал - правильно...
перечитал вопрос - взгрустнул
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243172
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время сталкивался с этой проблемой, решил ее написанием своей функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Function MonthDiff(DateBeg As Date, DateEnd As Date)
  Dim ret As Long
  Dim d1, d2 As Date
  
  If IsNull(DateBeg) Or IsNull(DateEnd) Then
    MonthDiff = Null
    Exit Function
  End If
  
  If DateBeg < DateEnd Then
    d1 = DateBeg
    d2 = DateEnd
  Else
    d1 = DateEnd
    d2 = DateBeg
  End If
  
  ret = (Year(d2) - Year(d1)) *  12  + (Month(d2) - Month(d1))
  If ret <>  0  And Day(d2) < Day(d1) Then ret = ret -  1 
        
  If d1 = DateBeg Then MonthDiff = ret Else MonthDiff = -ret
End Function
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243197
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
datediff считает переходы
от одного месяца к другому
(а также годы по тому же
принципу считает)
эту особенность надо знать!
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243198
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ALL

Чего-то я туплю
Объясните в чем проблема?

Ведь 31-12-2003 во всех ваших расчетах не включается
(т.к. 31.12.2003 00:00:00)
Всегда когда нужно посчитать период в месяцах (годах и т.п.)
нужно ведь учитывать последний день (и включить его)

Т.е.
?datediff("m",#07/01/03#,#12/31/03#+1)
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243211
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2incold
Скорее, в том, что
MsgBox DateDiff("m", #1/31/2003#, #2/1/2003#)
и
MsgBox DateDiff("m", "31.01.2003", "01.02.2003")
=1
...
Рейтинг: 0 / 0
еще раз о Dateserial
    #32243965
danny_u2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребята! большоое вам спасибо! (datedifff----хвала Герцу)))))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / еще раз о Dateserial
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]