powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Дата
14 сообщений из 14, страница 1 из 1
Дата
    #32236305
Dmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует дата, мне нужно от этой даты отнять один месяц назад, и нужно выяснить какая дата получится.
...
Рейтинг: 0 / 0
Дата
    #32236316
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как один (из множетсва) вариантов
? DateSerial(year(date()), Month(date())-1,day(date()))
...
Рейтинг: 0 / 0
Дата
    #32236339
Dmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем понял честно говоря с этим примером, что такое
DateSerial
и еще, а если я буду от 31.03.2003 отнимать месяц, какую дату он мне покажет?
31.02.2003 но ведь в феврале только 28 и в весокосный 29 дней
...
Рейтинг: 0 / 0
Дата
    #32236365
Dmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может лушче отнимать от текущей даты не один месяц а просто 30 дней, в моей случае это вполне устраивает, но опять же есди дада будет
20.01.2003 и отнять 30 дней, то должно получиться дата
21.12.2002 меняется месяц + год
????????
...
Рейтинг: 0 / 0
Дата
    #32236367
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> еще, а если я буду от 31.03.2003 отнимать месяц, какую дату он мне покажет?
31.02.2003

Покажет 03-03-2003 :)

Тебе что нужно? Отнять из даты месяц? Так ты сам написал: в ферале м.б. и 28 и 29, а может быть в другом месяце и 30 и 31 день. так что отнимать-то? Месяцы? Кол-во дней в текущем месяце?

Если дни, то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function DaysInMonth_2(d As Date) As Integer
'Из справки Access97
' Returns the number of days in a month
' Requires a date argument, since February can change if it's a leap year
' Lets Access figure it out
'
    If VarType(d) <>  7  Then
        DaysInMonth_2 = Null
    Else
        DaysInMonth_2 = DateSerial(Year(d), Month(d) +  1 ,  1 ) - DateSerial(Year(d), Month(d),  1 )
    End If
End Function


Только я не знаю как с висосным годом это работает
А в этом пример - с високосным годом все нормально

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Function DaysInMonth(d As Date) As Integer
'
' Возвращает число дней в месяце переданной даты
' Требуется для Февраля функция проверки года LeapYear
'
    If VarType(d) <>  7  Then    'определение какого типа переменая передана для Дат = 7 
        DaysInMonth = Null
    Else
        Select Case Month(d)
            Case  2 
                If LeapYear(Year(d)) Then
                    DaysInMonth =  29 
                Else
                    DaysInMonth =  28 
                End If
            Case  4 ,  6 ,  9 ,  11 
                DaysInMonth =  30 
            Case  1 ,  3 ,  5 ,  7 ,  8 ,  10 ,  12 
                DaysInMonth =  31 
        End Select
    End If
End Function

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function LeapYear(YYYY As Integer) As Integer
'
' Leap Year from standard rules
' YYYY: 4-digit year
'
    LeapYear = YYYY Mod  4  =  0  And (YYYY Mod  100  <>  0  Or YYYY Mod  400  =  0 )
End Function
...
Рейтинг: 0 / 0
Дата
    #32236391
Фотография Polev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Осторожно так)
а DateAdd("m", -1, Date1) не подойдет?
...
Рейтинг: 0 / 0
Дата
    #32236542
Dmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом примере как я понял он просто определяет сколько дней в месяце.
А как мне просто от даты отнять 30 дней, не важно какой месяц и год
от 20.01.4004 отнять 30 дней, что бы получилась дата 21.12.2003
как это сделать?
...
Рейтинг: 0 / 0
Дата
    #32236547
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DateAdd("m", -1, Date1) - отнять месяц
DateAdd("d", -30, Date1) - отнять 30 дней
DateAdd("d", -69, Date1) - отнять 69 дней
и т.д.
...
Рейтинг: 0 / 0
Дата
    #32236557
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Polev

А че осторожничать - все верно
? DateAdd("m", -1, cdate("31-03-2003"))
вернет 28.02.2003
Правда так же вернет эту дату и при
30-03-2003
29-03-2003
28-03-2003


2Dmit
>А как мне просто от даты отнять 30 дней
просто и отнеми
? cdate("31-03-2003")-30 = 01-01-2003
...
Рейтинг: 0 / 0
Дата
    #32236560
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> cdate("31-03-2003")-30 = 01-01-2003

ЧАВО???
...
Рейтинг: 0 / 0
Дата
    #32236565
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч

А чего тут "ЧАВО?" : 31-30=1 (день), если вычесть 29 будет 2 :)
...
Рейтинг: 0 / 0
Дата
    #32236580
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Так 1 марта должно получиться, а не 1 января.
...
Рейтинг: 0 / 0
Дата
    #32236586
Dmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:-)))
есле (31.03.2003)-30 будет только не 01.01.2003
а 01.03.2003 :-)))
Спасибо :-))
...
Рейтинг: 0 / 0
Дата
    #32236594
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч

ОчЯпЯтка.
==
точно корректором работал

2Dmit

Это то, что нужно? Отнять 30 дней ( а не месяц)?

Тогда делай или

? DateSerial(year(date()), Month(date()),day(date()-30))

или

? Cdate(cdate("31-03-2003")-30)

Так спокойней будет :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Дата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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