Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Литералы даты являются "читаемыми человеком" строками, заключенными в апострофы. Их сервер 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' | То же | То же | То же |
Типы TIMESTAMP в диалекте 3 и DATE в диалекте 1 принимают дату и время в литерале даты. Литерал даты без времени будет сохранен и с временем в виде ' 00: 00: 00'.
Тип DATE в диалекте 3 принимает только дату. Тип данных TIME принимает только время.
"Скользящее окно века" в Firebird
Независимо от того, как представлена часть года в литерале DATE или TIMESTAMP, в виде CCYY или YY, Firebird всегда сохраняет полное значение года. Он обращается к алгоритму получения части cc (столетие). Он также всегда включает столетие при поиске типов даты. Клиентские приложения отвечают за отображение года в виде двух или четырех цифр.
Для получения столетия Firebird использует алгоритм скользящего окна. Задача заключается в интерпретации двухсимвольного значения года как ближайшего к текущему году в интервале предшествующих и последующих 50 лет.
Например, если текущий год 2004, то двухсимвольные значения года будут интерпретироваться, как показано в табл. 10.3.
Таблица 10.3. Определение года по двухсимвольному виду, если текущим является 2004 год
Двухсимвольный год |
Полученный год |
Рассчитывается как |
98 |
1998 |
(2004 - 1998 = 6) < (2998 - 2004 = 94) |
00 |
2000 |
(2004 - 2000 = 4) < (2100 - 2004 = 96) |
45 |
2045 |
(2004 - 1945 = 55) > (2045 - 2004 = 41) |
50 |
2050 |
(2004 - 1950 = 54) > (2050 - 2004 = 46) |
54 |
1954 |
(2004 - 1954 = 50) = (2054 - 2004 = 50)* |
55 |
1955 |
(2004 - 1955 = 49) < (2055 - 2004 = 51) |
* Кажущееся равенство в этом сравнении может ввести в заблуждение. 1954 год ближе к 2004, чем 2054, потому что все даты между 1954 и 1955 годами ближе к 2004, чем все даты между 2054 и 2055 годами.
Разделители в неамериканских датах
Ничто не вызывает больше затруднений для интернациональных пользователей, как ограничения в Firebird на использование наклонной черты (/) только для американского формата 'MM/DD/CCYY'. Хотя почти все другие страны используют формат 'DD/MM/CCYY', Firebird будет либо записывать неправильную дату, либо вызовет исключение для литерала даты, использующего соглашение 'DD/MM/CCYY'.
Например, литерал даты '12/01/2004' всегда будет сохраняться в смысле "1 декабря 2004 года", а '14/01/2004' вызовет исключение выхода за границы диапазона, потому что не существует месяца 14. Однако допускается 'CCYY/MM/DD': дата '2004/12/31' будет расшифровано как "31 декабря 2004 года".
Обратите внимание, что Firebird не учитывает локальные форматы даты Windows или Linux при интерпретации литералов даты (ни на сервере, ни на клиенте). Его интерпретация числовых форматов дат основывается на символе-разделителе. Если точка (.) используется в качестве разделителя, Firebird интерпретирует дату в виде неамериканской нотации DD.MM, в то время как любой другой разделитель предполагает американскую нотацию MM/DD. Чтобы убрать американскую интерпретацию даты, ваши приложения должны преобразовать введенную дату DD/MM/CCYY в литерал, где наклонная черта заменена на символ точки в качестве разделителя. Дата 'DD.MM.CCYY' правильная. Могут быть использованы и другие форматы литералов даты.
Пробелы в литералах даты
Пробелы или символы табуляции могут присутствовать между элементами. Дата должна быть отделена от времени, по меньшей мере, одним пробелом.
Заключение в апострофы литералов даты
Литералы даты должны быть заключены в апострофы (ASCII 39). Допустимы только апострофы, а не двойные кавычки.
Литералы месяца
В табл. 10.4 показаны литералы месяцев.
Таблица 10.4. Литералы месяцев и правильное английское написание
Число |
Аббревиатура (не чувствительно к регистру) |
Интервал:
Закладка: