Работа с датами
Мы уже рассказывали о типах данных, имеющихся в различных СУБД, в том числе и в InterBase. В разных системах имеется различное число встроенных функций, упрощающих работу с датами, строками и другими типами данных. InterBase, к сожалению, обладает достаточно ограниченным набором таких функций. Однако, поскольку язык SQL, реализованный в InterBase, соответствует стандарту, то в нем имеются возможности конвертации дат в строки и гибкой работы с датами. Внутренне дата в InterBase содержит значения даты и времени. Внешне дата может быть представлена строками различных форматов, например:
¨ “October 27, 1995”
¨ “27-OCT-1994”
¨ “10-27-95”
¨ “10/27/95”
¨ “27.10.95”
Кроме абсолютных дат, в SQL-выражениях можно также пользоваться относительным заданием дат:
à “yesterday” вчера
à “today” сегодня
à “now” сейчас (включая время)
à “tomorrow” завтра
Дата может неявно конвертироваться в строку (из строки), если:
- строка, представляющая дату, имеет один из вышеперечисленных форматов;
- выражение не содержит неоднозначностей в толковании типов столбцов.
SELECT first_name, last_name, hire_date
FROM employee
WHERE hire_date > '1-1-94' получить список сотрудников,
принятых на работу после
1 января 1994 года
FIRST_NAME LAST_NAME HIRE_DATE
=============== ==================== ===========
Pierre Osborne 3-JAN-1994
John Montgomery 30-MAR-1994
Mark Guckenheimer 2-MAY-1994
Значения дат можно сравнивать друг с другом, сравнивать с относительными датами, вычитать одну дату из другой.
SELECT first_name, last_name, hire_date
FROM employee
WHERE 'today' - hire_date > 365 * 7 + 1
получить список служащих,
проработавших на предприятии
к настоящему времени
более 7 лет
FIRST_NAME LAST_NAME HIRE_DATE
=============== ==================== ===========
Robert Nelson 28-DEC-1988
Bruce Young 28-DEC-1988