ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.10.2024
Просмотров: 75
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. Интерпретация данных даты и времени.
2. Ключевые слова для обозначения даты и времени.
3. Файлы конфигурации даты/времени.
4. История единиц измерения времени.
Дополнительно поставляемые модули.
Дополнительно поставляемые программы.
Недокументированные возможности.
Нетривиальное использование таблиц.
Добавление ограничений в существующую таблицу.
Использование производных таблиц.
Модификация производных таблиц.
Создание полей со значениями-массивами.
Вставка значений в поля-массивы.
Определение количества элементов.
Обновление данных в полях-массивах
Автоматизация стандартных процедур.
Операции с последовательностями.
аббревиатуры через имя часового пояса, с которым эта аббревиатура не связана; в таком случае использование аббревиатуры равнозначно написанию просто имени пояса.
Использование @INCLUDE позволяет включить другой файл в каталоге .../share/timezonesets/. Включение может быть вложенным до ограниченной глубины.
Использование @OVERRIDE указывает, что последующие записи в файле могут переопределять предыдущие (как правило, это записи, полученные из включённых файлов). Без этого указания конфликтующие определения аббревиатуры одного и того же часового пояса считаются ошибкой.
При установке без внесения изменений, файл Default содержит все неконфликтующие аббревиатуры часовых поясов для большей части земного шара. Дополнительные файлы Australia и India предоставляются для данных регионов. Эти файлы сначала включают файл Default, а затем добавляют и изменяют аббревиатуры по мере необходимости.
Если при чтении набора аббревиатур часовых поясов возникает ошибка, новое значение не применяется и сохраняется старый набор. Если ошибка возникает при запуске базы данных, происходит сбой.
Стандарт SQL устанавливает, что «В определении „литерала типа дата-время“, „значения типа дата-время“ ограничены естественными правилами, касающимися дат и времени согласно григорианскому календарю». Следуя стандарту SQL, PostgreSQL подсчитывает даты исключительно в григорианском календаре, включая годы, когда этот календарь ещё не использовался. Это правило известно как пролептический григорианский календарь.
Юлианский календарь был введён Юлием Цезарем в 45 г. до н. э. Он широко использовался западной цивилизацией до 1582 года, когда страны начали переходить на григорианский календарь. В юлианском календаре тропический год длится приблизительно 365 1/4 дня = 365,25 дня. Каждые 128 лет накапливается примерно 1 день.
Накапливающаяся погрешность побудила папу Григория XIII реформировать календарь в соответствии с постановлениями Тридентского собора. В григорианском календаре тропический год длится приблизительно 365 + 97 / 400 дней = 365,2425 дней. Таком образом, погрешность в один день тропического года накапливается примерно за 3300 лет.
Приблизительное число 365+97/400 получается из-за того, что из каждых 400 лет 97 високосные. При этом действуют следующие правила:
Таким образом, 1700, 1800, 1900, 2100 и 2200 не являются високосными годами. Но 1600, 2000 и 2400 — високосные. А в юлианском календаре високосными считаются все годы, кратные 4.
В SQL есть различие между зарезервированными и незарезервированными ключевыми словами. Согласно стандарту, действительно ключевыми словами являются только зарезервированные слова; они не могут быть идентификаторами. Незарезервированные ключевые слова имеют особое значение только в определённых контекстах и могут быть идентификаторами в других. Большинство незарезервированных ключевых слов на самом деле представляют имена встроенных таблиц и функций, определённых в SQL. Концепция незарезервированных ключевых слов собственно введена только для того, чтобы показать, что эти слова имеют некоторое предопределённое значение в отдельных контекстах.
В PostgreSQL анализатор SQL сталкивается с дополнительными сложностями. Ему приходится иметь дело с несколькими различными классами элементов языка, начиная с тех, что никогда не могут использоваться как идентификаторы, и заканчивая теми, что не имеют никаких особых отличий от обычных идентификаторов. (Последнее обычно относится к функциям, описанным в SQL.) Даже зарезервированные ключевые слова не полностью зарезервированы в PostgreSQL, а могут использоваться в качестве меток столбцов (например, можно написать SELECT 55 AS CHECK, хотя CHECK и является зарезервированным ключевым словом).
Использование @INCLUDE позволяет включить другой файл в каталоге .../share/timezonesets/. Включение может быть вложенным до ограниченной глубины.
Использование @OVERRIDE указывает, что последующие записи в файле могут переопределять предыдущие (как правило, это записи, полученные из включённых файлов). Без этого указания конфликтующие определения аббревиатуры одного и того же часового пояса считаются ошибкой.
При установке без внесения изменений, файл Default содержит все неконфликтующие аббревиатуры часовых поясов для большей части земного шара. Дополнительные файлы Australia и India предоставляются для данных регионов. Эти файлы сначала включают файл Default, а затем добавляют и изменяют аббревиатуры по мере необходимости.
Если при чтении набора аббревиатур часовых поясов возникает ошибка, новое значение не применяется и сохраняется старый набор. Если ошибка возникает при запуске базы данных, происходит сбой.
4. История единиц измерения времени.
Стандарт SQL устанавливает, что «В определении „литерала типа дата-время“, „значения типа дата-время“ ограничены естественными правилами, касающимися дат и времени согласно григорианскому календарю». Следуя стандарту SQL, PostgreSQL подсчитывает даты исключительно в григорианском календаре, включая годы, когда этот календарь ещё не использовался. Это правило известно как пролептический григорианский календарь.
Юлианский календарь был введён Юлием Цезарем в 45 г. до н. э. Он широко использовался западной цивилизацией до 1582 года, когда страны начали переходить на григорианский календарь. В юлианском календаре тропический год длится приблизительно 365 1/4 дня = 365,25 дня. Каждые 128 лет накапливается примерно 1 день.
Накапливающаяся погрешность побудила папу Григория XIII реформировать календарь в соответствии с постановлениями Тридентского собора. В григорианском календаре тропический год длится приблизительно 365 + 97 / 400 дней = 365,2425 дней. Таком образом, погрешность в один день тропического года накапливается примерно за 3300 лет.
Приблизительное число 365+97/400 получается из-за того, что из каждых 400 лет 97 високосные. При этом действуют следующие правила:
Каждый год кратный 4 является високосным. |
Однако каждый год кратный 100 не является високосным. |
Тем не менее, каждый год кратный 400 всё же является високосным. |
Таким образом, 1700, 1800, 1900, 2100 и 2200 не являются високосными годами. Но 1600, 2000 и 2400 — високосные. А в юлианском календаре високосными считаются все годы, кратные 4.
Ключевые слова SQL.
В SQL есть различие между зарезервированными и незарезервированными ключевыми словами. Согласно стандарту, действительно ключевыми словами являются только зарезервированные слова; они не могут быть идентификаторами. Незарезервированные ключевые слова имеют особое значение только в определённых контекстах и могут быть идентификаторами в других. Большинство незарезервированных ключевых слов на самом деле представляют имена встроенных таблиц и функций, определённых в SQL. Концепция незарезервированных ключевых слов собственно введена только для того, чтобы показать, что эти слова имеют некоторое предопределённое значение в отдельных контекстах.
В PostgreSQL анализатор SQL сталкивается с дополнительными сложностями. Ему приходится иметь дело с несколькими различными классами элементов языка, начиная с тех, что никогда не могут использоваться как идентификаторы, и заканчивая теми, что не имеют никаких особых отличий от обычных идентификаторов. (Последнее обычно относится к функциям, описанным в SQL.) Даже зарезервированные ключевые слова не полностью зарезервированы в PostgreSQL, а могут использоваться в качестве меток столбцов (например, можно написать SELECT 55 AS CHECK, хотя CHECK и является зарезервированным ключевым словом).
Ключевое слово | PostgreSQL | SQL:2011 | SQL:2008 | SQL-92 |
A | | не зарезервировано | не зарезервировано | |
ABORT | не зарезервировано | | | |
ABS | | зарезервировано | зарезервировано | |
ABSENT | | не зарезервировано | не зарезервировано | |
ABSOLUTE | не зарезервировано | не зарезервировано | не зарезервировано | зарезервировано |
ACCESS | не зарезервировано | | | |
ACCORDING | | не зарезервировано | не зарезервировано | |
ACTION | не зарезервировано | не зарезервировано | не зарезервировано | зарезервировано |
ADA | | не зарезервировано | не зарезервировано | не зарезервировано |
ADD | не зарезервировано | не зарезервировано | не зарезервировано | зарезервировано |
ADMIN | не зарезервировано | не зарезервировано | не зарезервировано | |
AFTER | не зарезервировано | не зарезервировано | не зарезервировано | |
AGGREGATE | не зарезервировано | | | |
ALL | зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ALLOCATE | | зарезервировано | зарезервировано | зарезервировано |
ALSO | не зарезервировано | | | |
ALTER | не зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ALWAYS | не зарезервировано | не зарезервировано | не зарезервировано | |
ANALYSE | зарезервировано | | | |
ANALYZE | зарезервировано | | | |
AND | зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ANY | зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ARE | | зарезервировано | зарезервировано | зарезервировано |
ARRAY | зарезервировано | зарезервировано | зарезервировано | |
ARRAY_AGG | | зарезервировано | зарезервировано | |
ARRAY_MAX_CARDINALITY | | зарезервировано | | |
AS | зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ASC | зарезервировано | не зарезервировано | не зарезервировано | зарезервировано |
ASENSITIVE | | зарезервировано | зарезервировано | |
ASSERTION | не зарезервировано | не зарезервировано | не зарезервировано | зарезервировано |
ASSIGNMENT | не зарезервировано | не зарезервировано | не зарезервировано | |
ASYMMETRIC | зарезервировано | зарезервировано | зарезервировано | |
AT | не зарезервировано | зарезервировано | зарезервировано | зарезервировано |
ATOMIC | | зарезервировано | зарезервировано | |
ATTACH | не зарезервировано | | | |
ATTRIBUTE | не зарезервировано | не зарезервировано | не зарезервировано | |
ATTRIBUTES | | не зарезервировано | не зарезервировано | |
AUTHORIZATION | зарезервировано (допускается функция или тип) | зарезервировано | зарезервировано | зарезервировано |
AVG | | зарезервировано | зарезервировано | зарезервировано |
BACKWARD | не зарезервировано | | | |
BASE64 | | не зарезервировано | не зарезервировано | |
BEFORE | не зарезервировано | не зарезервировано | не зарезервировано | |
BEGIN | не зарезервировано | зарезервировано | зарезервировано | зарезервировано |
BEGIN_FRAME | | зарезервировано | | |
BEGIN_PARTITION | | зарезервировано | | |
BERNOULLI | | не зарезервировано | не зарезервировано | |
BETWEEN | не зарезервировано (не допускается функция или тип) | зарезервировано | зарезервировано | зарезервировано |
BIGINT | не зарезервировано (не допускается функция или тип) | зарезервировано | зарезервировано | |
BINARY | зарезервировано (допускается функция или тип) | зарезервировано | зарезервировано | |
BIT | не зарезервировано (не допускается функция или тип) | | | зарезервировано |
BIT_LENGTH | | | | зарезервировано |
BLOB | | зарезервировано | зарезервировано | |
BLOCKED | | не зарезервировано | не зарезервировано | |
BOM | | не зарезервировано | не зарезервировано | |