Вычисления над датами
Функция DateAdd предназначена для добавления или вычитания указанного временного интервала из значения даты. Заметьте, с ее помощью можно задавать временной интервал не только в днях, но и в месяцах, годах и так далее.
DateAdd(interval, number, date)
Аргумент interval - строка, указывающая тип добавляемого временного интервала, number - число временных интервалов, на которое следует изменить дату, date - дата, к которой добавляется указанный временной интервал. Допустимые значения аргумента interval: приведены в следующей таблице.
Таблица 8.4. Возможные временные интервалы
ЗначениеОписание
yyyy | Год. |
Q | Квартал. |
m | Месяц. |
Y | День года. |
D | День месяца. |
w | День недели. |
ww | Неделя. |
H | Часы. |
N | Минуты. |
S | Секунды. |
Для примера, приведем два вызова этой функции в окне отладки:
? DateAdd("m", 1, "31-янв-95") 28.02.95 ? DateAdd("m", -1, "31-янв-95") 31.12.94
Функция DateDiff предназначена для определения времени, прошедшего между двумя датами. Например, с помощью этой функции можно вычислить число дней между двумя датами или число недель между текущей датой и концом года. Синтаксис:
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
- Аргумент interval задает тип временного интервала при вычислении разности между датами date1 и date2, - его возможные значения те же, что и для функции DateAdd,
- date1 и date2 - две даты, разность между которыми следует вычислить.
- firstdayofweek - константа, указывающая первый день недели (по умолчанию считается, что неделя начинается с воскресенья).
- firstweekofyear - константа, указывающая первую неделю года (по умолчанию первой неделей считается неделя, содержащая 1 января).
Приведем примеры вызова этой функции в окне отладки:
? DateDiff("m", "18.10.55", "31-янв-95") 471 ? DateDiff("Y", "18.11.97", "01.01.97") -321
Функция DatePart предназначена для определения указанного компонента даты. Например, с помощью этой функции можно определить день недели или текущий час.
Синтаксис:
DatePart(interval, date[,firstdayofweek[, firstweekofyear]])
- Аргумент interval задает тип возвращаемого временного интервала,
- date - дата, подлежащая обработке.
- Необязательные аргументы Firstdayofweek и Firstweekofyear имеют тот же смысл, что и для функции DateDiff.
Примеры вызова:
? DatePart("ww", "02.09.89") 35 ? DatePart("w", "02.09.89") 7
Функция DateSerial позволяет вычислить значение даты типа Variant (Date) по ее компонентам, - году, месяцу и дню. Ее синтаксис:
DateSerial(year, month, day)
Значение каждого аргумента должно лежать в соответствующем диапазоне: 100 -- 9999 для года, 1 - 31 для дней и 1 - 12 для месяцев. Можно также использовать для аргументов числовые выражения для описания относительной даты.
Примеры:
? DateSerial(1997 - 25, 10 - 2, 18 - 1) 17.08.72 ? DateSerial(Year(Now) - 3,Month(Now) - 2, Day(Now) - 1) 08.03.96
Функция DateValue переводит аргумент-строку в дату. В отличие от функции преобразования CDate, функция DateValue правильно обрабатывает допустимые даты, содержащие полные или краткие названия месяцев.
Ее синтаксис:
DateValue(date)
Аргумент date может задавать как дату, так и время. Возможные разные форматы задания даты, в том числе и с названиями месяцев:
Примеры:
? DateValue ("25.04.1997") 25.04.97 ? DateValue ("04.25.1997") 25.04.97 ? DateValue ("25 апреля 1997") 25.04.97 ? DateValue ("25 - апр.-97") 25.04.97 ? DateValue ("Апрель, 25, 97") 25.04.97 ? DateValue ("25/04/1997") 25.04.97 ? DateValue ("25.04") 25.04.99
Последнее равенство связано с тем: что при отсутствии года, функция DateValue использует текущий год по системному календарю компьютера.
Функции Day(date), Month(date), и Year(date) являются, в некотором смысле, обратными к двум предыдущим. Они по аргументу-дате определяют номер дня, месяца и года. Функция Weekday(date, [firstdayofweek]) возвращает значение типа Variant (Integer), содержащее целое число, представляющее день недели.
Второй аргумент задает первый день недели (по умолчанию - воскресенье). Значение 2 соответствует понедельнику.
Функции Hour(время), Minute(время) и Second(время) по аргументу, являющемуся числовым или строковым выражением, представляющим время, возвращает содержащее целое число, которое представляет, соответственно, часы, минуты и секунды в значении времени.
Функция TimeSerial(hour, minute, second) вычисляет результат Variant (Date), содержащее значение времени, соответствующее указанным часу, минуте и секунде.
Функция TimeValue(время) возвращает значение типа Variant (Date), содержащее время. Аргумент время обычно задается строковым выражением, представляющим время от 0:00:00 (12:00:00 A.M.) до 23:59:59 (11:59:59 P.M.) включительно. Задавать его нужно корректно, чтобы не возникало ошибок, как в последних двух примерах:
? Year(Now) 1999 ? Month(now) 5 ? Day(Now) 9 ? Hour(Now) 11 ? Minute (Now) 57 ? Second(Now) 28 ? TimeSerial(Hour(Now), Minute(now), Second(Now)) 11:59:00 ? TimeValue("12:30 PM") 12:30:00 ? TimeValue("12.30") 0:00:00 ? TimeValue("12,5") 0:00:00
Содержание раздела