Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

CHECK (TOTAL_VALUE >= 0),

DISCOUNT FLOAT

DEFAULT 0

CHECK (DISCOUNT >= 0 AND DISCOUNT <= 1));

Пора дальше

В следующей главе мы рассмотрим типы данных для хранения и обработки дат и времени в Firebird.

ГЛАВА 10. Типы даты и времени.

Firebird поддерживает в диалекте 3 типы данных DATE, TIME и TIMESTAMP. В диалекте 1 поддерживается только один тип данных, подобный TIMESTAMP, который, хотя и называется DATE, не является взаимозаменяемым с типом DATE диалекта 3.

DATE

В диалекте 3 DATE хранит одну дату без времени - тип "только дата" - в виде 32-битового знакового целого. Хранимый диапазон дат от 1 января 0001 года до 31 декабря 9999 года [24] .

В

диалекте 1 тип DATE эквивалентен типу TIMESTAMP диалекта 3. Действительно, когда вы создаете новый столбец даты в базе данных диалекта 1 с использованием isql, появляется предупреждение, информирующее вас, что тип данных был переименован! SQLTYPE будет иметь тип ISC_TIMESTAMP.

24

Так в оригинале. В документации по InterBase указан диапазон дат от 1 января 100 г. до 29 февраля 32 768 г.
– Прим. перев.

Не существует типа "только дата" в диалекте 1. Для сохранения в диалекте 1 только даты, передайте правильное значение даты и литерал времени в виде "00:00:00.0000". Литералы даты и времени обсуждаются более подробно в следующих разделах.

! ! !

СОВЕТ. Если вы используете isql для проверки дат диалекта 1, вы можете включать/выключать отображение времени при выводе даты, используя команду isql SET TIME. По умолчанию вывод времени отключен.

. ! .

TIMESTAMP

Тип данных TIMESTAMP диалекта 3 состоит из двух 32-битовых слов, хранящих дату и время. Данные хранятся как два 32-битовых целых, что эквивалентно типу DATE в диалекте 1.

Доли секунды

Доли секунды, если хранятся, являются десятитысячными долями секунды для всех типов даты и времени.

TIME

В диалекте 3 TIME хранит время дня без даты: "только время". Для хранения используется 32-битовое беззнаковое целое. Диапазон времени от 00:00 до 23:59:59.9999.

В диалекте 1 нет эквивалента типу TIME. Если нужно сохранить время дня, выделите элементы часов, минут и секунд из данных DATE и преобразуйте в строку. Технические советы есть дальше в этой главе - обратитесь к разд. "Комбинирование EXTRACT с другими функциями".

Интервал времени

Ошибочно предполагать, что тип TIME может хранить интервал времени. Он не может. Для вычисления интервала времени вычтите более позднюю дату или время из более раннего. Результатом будет число NUMERIC(18,9), выражающее интервал в днях. Поскольку точность теряется, доли секунд надо рассматривать как миллисекунды, а не десятитысячные доли секунд. Используйте обычные арифметические операции для конвертирования дней в часы, минуты или секунды, как вам требуется.

Предположим, что столбцы STARTED и FINISHED имеют тип TIMESTAMP (DATE В диалекте 1). Для вычисления и сохранения в столбце TIME_ELAPSED типа DOUBLE PRECISION интервала времени в минутах вы можете использовать следующее [25] :

UPDATE ATABLE

SET TIME_ELAPSED = (FINISHED - STARTED) * 24 * 60

WHERE ((FINISHED IS NOT NULL) AND (STARTED IS NOT NULL));

Литералы даты

25

Для того чтобы осуществлять агрегацию интервала (суммирование, среднее), необходимо хранить не время окончания интервала, а его длительность, например в секундах, в обычном целочисленном типе данных.
– Прим. науч. ред.

Литералы даты являются "читаемыми человеком" строками, заключенными в апострофы. Их сервер Firebird распознает как константы даты или даты-и-времени для EXTRACT и других выражений, операций INSERT и UPDATE, а также в предложении WHERE оператора SELECT.

Литералы даты используются, когда нужно передать константы даты:

* операторам SELECT, UPDATE и DELETE в условия поиска предложения WHERE;

* операторам INSERT и UPDATE для ввода констант даты и времени;

* аргументу FROM функции EXTRACT.

Распознаваемые форматы литералов даты и времени

Количество форматов строк, распознаваемых как литералы даты, ограничено. Эти форматы используют шаблоны для подстановки элементов строк.

Табл. 10.1 описывает используемые соглашения.

Таблица 10.1. Элементы литералов даты

Элемент Представление
CC Столетие. Первые две цифры года (например, 20 для двадцать первого века)
YY Год столетия. Firebird всегда сохраняет полное значение года, даже если год был введен без сегмента cc, при этом используется алгоритм "скользящего окна" для определения того, какое столетие сохранять
MM Месяц- целое в диапазоне от 1 до 12. В некоторых форматах требуется две цифры
MMM Месяц - один из [JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC] . Также допустимы полные английские названия месяцев
DD День месяца- целое в диапазоне от 1 до 31. В некоторых форматах требуется две цифры. Неверное значение дня для конкретного месяца вызывает ошибку
HH Часы - целое в диапазоне от 00 до 23. Требуются две цифры
NN Минуты - целое в диапазоне от 00 до 59. Требуются две цифры
SS Полные секунды - целое в диапазоне от 00 до 59. Требуются две цифры
nnnn Десятитысячные доли секунды в диапазоне от 0 до 9999. Значение по умолчанию 0000. Если используется, то требуется четыре цифры

Распознаваемые форматы описаны в табл. 10.2.

Таблица 10.2. Распознаваемые форматы литералов даты и времени

Формат Диалект 3 DATE Диалект 3 TIMESTAMP DATE
' CCYY-MM-DD' или 'YY-MM-DD' Сохраняет только дату Сохраняет дату и время в виде 00:00:00 Сохраняет дату и время в.виде 00:00:00
'MM/DD/CCYY' или 'MM/DD/YY' То же То же То же
'DD.MM.CCYY' или 'DD.MM.YY' То же То же То же
' DD-MMM-CCYY' или 'DD-MMM-YY' То же То же То же
'DD,MMM,CCYY' или ' DD,MMM,YY' То же То же То же
'DD MMM CCYY' или 'DD MMM YY' To же То же То же
'DDMMMCCYY' или 'DDMMMYY' To же То же То же

В элементе MMM также допустимы полные английские названия месяцев, нечувствительные к регистру. Правильные названия приведены в табл. 10.3

'CCYY-MM-DD HH:NN:SS.nnnn' или 'YY-MM-DD HH:NN:SS.nnnn' (элемент ".nnnn" необязателен) Сохраняет только дату; может потребовать преобразования для даты. Время не сохраняется Сохраняет дату и время Сохраняет дату и время
'MM/DD/CCYYHH:NN:SS.nnnn' или 'MM/DD/YY HH:NN:SS.nnnn' То же То же То же
' DD.MM.CCYYHH:NN:SS.nnnn' или 'DD.MM.YY HH:NN:SS.nnnn' То же То же То же
'DD-MMM-CCYY HH:NN:SS.nnnn' или 'DD-MMMYY HH:NN:SS.nnnn' То же То же То же
Поделиться:
Популярные книги

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Голодные игры

Коллинз Сьюзен
1. Голодные игры
Фантастика:
социально-философская фантастика
боевая фантастика
9.48
рейтинг книги
Голодные игры

Последняя Арена 8

Греков Сергей
8. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 8

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Измена. Свадьба дракона

Белова Екатерина
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Измена. Свадьба дракона