Axiom Справочник языка

Справочник языка

Сборка даты и календарные части

Год, месяц и день часто известны по отдельности — например, пришли из полей ввода, — и из них нужно собрать одно значение DATE. Обратная задача тоже встречается постоянно: из готовой даты требуется извлечь компонент или найти границу месяца и года. Ниже собраны функции сборки DATESERIAL, TIMESERIAL и DATETIMESERIAL, извлечения частей и определения календарных границ; синтаксис относится к разным функциям.

DATESERIAL

DATESERIAL возвращает дату, собранную из года, месяца и дня. Функция нужна для создания значения DATE, когда год, месяц и день получены отдельно; вызывать её можно в выражении консольной или графической программы, оператор SCREEN или CANVAS не требуется.

Синтаксис

DATESERIAL(<год>, <месяц>, <день>)

Аргументы

Все аргументы должны иметь тип INTEGER: год от 1 до 9999; месяц от 1 до 12; день от 1 до 31, существующий в указанном месяце.

Результат

Функция возвращает значение типа DATE.

Правила и ограничения

Лишние дни или месяцы не переносятся в соседний месяц или год; например, 29 февраля невисокосного года недопустимо.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT DATESERIAL(2024, 2, 29)

Ожидаемый вывод:

2024-02-29

См. также

Указатель встроенных функций

TIMESERIAL

Функция TIMESERIAL возвращает время суток, собранное из часа, минуты и секунды. Так создают значение TIME из отдельно вычисленных часа, минуты и секунды. Вызов допустим в выражении консольной и графической программы; оператор SCREEN или CANVAS не нужен.

Синтаксис

TIMESERIAL(<час>, <минута>, <секунда>)

Аргументы

Все аргументы INTEGER: час от 0 до 23, минута и секунда от 0 до 59.

Результат

Функция возвращает значение типа TIME.

Правила и ограничения

Избыточные компоненты не нормализуются. Час 24, отрицательные компоненты и секунда 60 недопустимы.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT TIMESERIAL(23, 59, 59)

Ожидаемый вывод:

23:59:59

См. также

Указатель встроенных функций

DATETIMESERIAL

DATETIMESERIAL возвращает дату и время, собранные из готовых значений DATE и TIME. Функция собирает одно значение DATETIME из календарной даты и времени суток, полученных по отдельности, без промежуточной текстовой записи. Вызывается она в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

DATETIMESERIAL(<дата>, <время>)

Аргументы

Первый аргумент должен иметь тип DATE, второй — тип TIME. Оба аргумента обязательны. Строка с канонической записью принимается, потому что разбор выполняет сама функция; значение DATETIME вместо одного из аргументов не подходит, поскольку его пришлось бы молча усечь.

Результат

Функция возвращает значение типа DATETIME: календарную дату первого аргумента и время суток второго аргумента, включая доли секунды.

Правила и ограничения

Обе части переносятся целиком, поэтому потеря компонента не происходит. Часовой пояс не добавляется: результат остаётся календарным временем без пояса. Значение DATETIME, полученное функцией, сравнимо с любым другим DATETIME и участвует в арифметике на равных условиях. Для обратного разбора используют DATEVALUE и TIMEVALUE с аргументом DATETIME.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента, в том числе попытку передать DATETIME вместо DATE или TIME. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

DIM dayValue AS DATE = "2024-02-29"
DIM clockTime AS TIME = "12:34:56.125"
PRINT DATETIMESERIAL(dayValue, clockTime)

Ожидаемый вывод:

2024-02-29 12:34:56.125

См. также

DATEVALUE, TIMEVALUE, Указатель встроенных функций

YEAR

YEAR возвращает год календарной даты. Так можно извлечь нужный календарный компонент или вычислить границу периода для исходной даты. Вызывается функция в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

YEAR(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип INTEGER от 1 до 9999.

Правила и ограничения

Время суток не влияет на результат: функция читает календарную часть и потому сама отбрасывает время суток у DATETIME. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT YEAR("2024-02-29")

Ожидаемый вывод:

2024

См. также

Указатель встроенных функций

MONTH

MONTH возвращает номер месяца календарной даты — например, чтобы извлечь нужный календарный компонент или вычислить границу периода для исходной даты. Вызов допустим в выражении консольной и графической программы, оператор SCREEN или CANVAS не нужен.

Синтаксис

MONTH(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип INTEGER от 1 до 12.

Правила и ограничения

Январь имеет номер 1.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT MONTH("2024-02-29")

Ожидаемый вывод:

2

См. также

Указатель встроенных функций

DAY

Функция DAY возвращает номер дня внутри месяца. Извлечь нужный календарный компонент или вычислить границу периода для исходной даты с её помощью можно прямо в выражении консольной или графической программы; оператор SCREEN или CANVAS не требуется.

Синтаксис

DAY(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип INTEGER от 1 до 31.

Правила и ограничения

Это день месяца, а не порядковый день года.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT DAY("2024-02-29")

Ожидаемый вывод:

29

См. также

Указатель встроенных функций

WEEKDAY

WEEKDAY возвращает номер дня недели. Функция позволяет извлечь нужный календарный компонент или вычислить границу периода для исходной даты и работает в выражениях консольных и графических программ без оператора SCREEN или CANVAS.

Синтаксис

WEEKDAY(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип INTEGER от 1 до 7.

Правила и ограничения

Понедельник имеет номер 1, воскресенье — 7. Аргумента первого дня недели нет.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT WEEKDAY("2024-02-29")

Ожидаемый вывод:

4

См. также

Указатель встроенных функций

STARTOFMONTH

STARTOFMONTH возвращает первый день месяца исходной даты. Через неё извлекают нужный календарный компонент или вычисляют границу периода для исходной даты. Вызывается она в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

STARTOFMONTH(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип DATE.

Правила и ограничения

День результата равен 1.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT STARTOFMONTH("2024-02-20")

Ожидаемый вывод:

2024-02-01

См. также

Указатель встроенных функций

ENDOFMONTH

Функция ENDOFMONTH возвращает последний день месяца исходной даты. Ею пользуются, чтобы извлечь нужный календарный компонент или вычислить границу периода для исходной даты. Вызов допустим в выражении консольной и графической программы — оператор SCREEN или CANVAS не нужен.

Синтаксис

ENDOFMONTH(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип DATE.

Правила и ограничения

Февраль учитывает високосность года.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT ENDOFMONTH("2024-02-20")

Ожидаемый вывод:

2024-02-29

См. также

Указатель встроенных функций

STARTOFYEAR

STARTOFYEAR возвращает первый день года исходной даты. Функция даёт нужный календарный компонент или границу периода для исходной даты и вызывается в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

STARTOFYEAR(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип DATE.

Правила и ограничения

Возвращается 1 января того же года.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT STARTOFYEAR("2024-02-20")

Ожидаемый вывод:

2024-01-01

См. также

Указатель встроенных функций

ENDOFYEAR

ENDOFYEAR возвращает последний день года исходной даты — так извлекают нужный календарный компонент или вычисляют границу периода для исходной даты. Функция работает в выражениях консольных и графических программ, оператор SCREEN или CANVAS не требуется.

Синтаксис

ENDOFYEAR(<дата>)

Аргументы

Передайте DATE, DATETIME или STRING в точной форме yyyy-MM-dd либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только календарная часть; строка должна содержать действительную календарную дату.

Результат

Результат имеет тип DATE.

Правила и ограничения

Возвращается 31 декабря того же года.

У DATETIME функция читает только календарную часть и потому сама отбрасывает время суток. Другие временные виды не принимаются: значение TIME отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT ENDOFYEAR("2024-02-20")

Ожидаемый вывод:

2024-12-31

См. также

Указатель встроенных функций

HOUR

HOUR возвращает час времени суток. Функция позволяет отдельно прочитать компонент времени суток, например для проверки расписания. Вызывается она в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

HOUR(<время>)

Аргументы

Передайте TIME, DATETIME или STRING в точной форме HH:mm:ss либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только время суток.

Результат

Результат INTEGER в диапазоне 0–23.

Правила и ограничения

Компонент не означает полную длительность; например, MINUTE не считает минуты от полуночи. У DATETIME функция читает только время суток и потому сама отбрасывает календарную дату. Другие временные виды не принимаются: значение DATE отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT HOUR("23:45:56")

Ожидаемый вывод:

23

См. также

Указатель встроенных функций

MINUTE

Функция MINUTE возвращает минуту внутри часа — отдельный компонент времени суток, который бывает нужен, например, для проверки расписания. Вызывать её можно в выражении консольной или графической программы, оператор SCREEN или CANVAS не нужен.

Синтаксис

MINUTE(<время>)

Аргументы

Передайте TIME, DATETIME или STRING в точной форме HH:mm:ss либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только время суток.

Результат

Результат INTEGER в диапазоне 0–59.

Правила и ограничения

Компонент не означает полную длительность; например, MINUTE не считает минуты от полуночи. У DATETIME функция читает только время суток и потому сама отбрасывает календарную дату. Другие временные виды не принимаются: значение DATE отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT MINUTE("23:45:56")

Ожидаемый вывод:

45

См. также

Указатель встроенных функций

SECOND

SECOND возвращает секунду внутри минуты. Через неё отдельно читают компонент времени суток, например для проверки расписания; вызов допустим в выражении консольной и графической программы без оператора SCREEN или CANVAS.

Синтаксис

SECOND(<время>)

Аргументы

Передайте TIME, DATETIME или STRING в точной форме HH:mm:ss либо yyyy-MM-dd HH:mm:ss. У DATETIME используется только время суток.

Результат

Результат INTEGER в диапазоне 0–59. Доли секунды в результат не входят.

Правила и ограничения

Компонент не означает полную длительность; например, MINUTE не считает минуты от полуночи. У DATETIME функция читает только время суток и потому сама отбрасывает календарную дату. Другие временные виды не принимаются: значение DATE отклоняется как несовместимый тип аргумента.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT SECOND("23:45:56")

Ожидаемый вывод:

56

См. также

Указатель встроенных функций

MONTHNAME

MONTHNAME возвращает английское название месяца — календарную характеристику, указанную в определении функции. Вызывается она в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

MONTHNAME(<номер месяца>)

Аргументы

Передайте INTEGER от 1 до 12, задающий номер месяца.

Результат

Функция возвращает значение типа STRING.

Правила и ограничения

Названия от January до December не зависят от языка интерфейса; краткой формы нет.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT MONTHNAME(2)

Ожидаемый вывод:

February

См. также

Указатель встроенных функций

WEEKDAYNAME

Функция WEEKDAYNAME возвращает английское название дня недели, то есть календарную характеристику, указанную в её определении. Вызов допустим в выражении консольной и графической программы; оператор SCREEN или CANVAS не нужен.

Синтаксис

WEEKDAYNAME(<номер дня недели>)

Аргументы

Передайте INTEGER от 1 до 7: понедельник имеет номер 1.

Результат

Функция возвращает значение типа STRING.

Правила и ограничения

Названия от Monday до Sunday не зависят от языка интерфейса; краткой формы нет.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT WEEKDAYNAME(7)

Ожидаемый вывод:

Sunday

См. также

Указатель встроенных функций

ISLEAPYEAR

ISLEAPYEAR возвращает признак високосности года. Это календарная характеристика, указанная в определении функции; вызывать её можно в выражении консольной или графической программы, оператор SCREEN или CANVAS не требуется.

Синтаксис

ISLEAPYEAR(<год>)

Аргументы

Передайте INTEGER от 1 до 9999, задающий календарный год.

Результат

Функция возвращает значение типа BOOLEAN.

Правила и ограничения

Используется григорианское правило: делимость на 4, исключение столетий, кроме делимых на 400.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT ISLEAPYEAR(2000)
PRINT ISLEAPYEAR(1900)

Ожидаемый вывод:

TRUE
FALSE

См. также

Указатель встроенных функций

DAYSINMONTH

DAYSINMONTH возвращает количество дней в месяце. Функция даёт календарную характеристику, указанную в её определении, и работает в выражениях консольных и графических программ без оператора SCREEN или CANVAS.

Синтаксис

DAYSINMONTH(<год>, <месяц>)

Аргументы

Передайте два INTEGER: год от 1 до 9999 и месяц от 1 до 12.

Результат

Результат INTEGER от 28 до 31.

Правила и ограничения

Февраль содержит 28 или 29 дней в зависимости от года.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3007 возникает при недопустимой строке, номере или календарной дате.

Пример

PRINT DAYSINMONTH(2024, 2)

Ожидаемый вывод:

29

См. также

Указатель встроенных функций