PostgreSQL — Википедия с видео // WIKI 2

Данная часть описывает использование языка в PostgreSQL. Она начинается с описания общего синтаксиса , потом будет рассказано как создать структуры для хранения данных, как заполнить базу данных и как создавать к ней запросы.

В середине перечисляются доступные типы данных и функции, которые могут быть использованы в командах . Оставшийся материал раскрывает некоторые аспекты, которые являются важными для тонкой настройки СУБД на предмет оптимальной производительности.

Информация в этой части книги упорядочена так, чтобы новичок мог следовать ей от начала до конца и получить полное понимание по рассматриваемым темам без многократного заглядывания вперёд. Главы задумывались как самодостаточные объёмы информации, так что продвинутые пользователи могу читать главы отдельно по своему выбору. Информация в этой части предоставляется в повествовательной форме, согласно темам. Читатели, которые ищут полное описание какой-либо отдельной команды, должны посмотреть Part VI.

Читатели этой части должны знать как подключиться к базе PostgreSQL и выполнять команды . Читатели, которые незнакомы с этими вопросами, сперва должны прочитать Part I. Команды , обычно вводятся с помощью интерактивного терминала PostgreSQL, который называется psql, но могут использоваться и другие программы, которые предоставляют схожую функциональность.

Строковые функции

В PostgreSQL существует множество разнообразных строковых функций, предназначенных для форматирования, анализа и сравнения строк. К их числу относятся как функции стандарта SQL92, так и нестандартные расширения PostgreSQL (например, Itrim(), rtrim() и substr()).

Строковые функции PostgreSQL перечислены в табл. 5.10. В общем случае все, что говорится о типе text, в равной степени относится к значениям типа character и varchar.

Таблица 5.10. Строковые функции.

Функция Описание
ascii(s) Возвращает ASCII-код символа, переданного в виде строковой переменной s
btrim(s [, t]) Возвращает строку s, в начале и в конце которой удалены все символы, входящие в строку t (если аргумент t не задан, усекаются начальные и конечные пропуски – пробелы, символы табуляции и т. д.)
char length(s) Возвращает длину строки s в символах
chr(n) Возвращает символ с ASCII-кодом n
s ilike(f) Возвращает true, если выражение f совпадает (без учета регистра символов) с s
imtcap(s) Возвращает строку s, в которой первая буква каждого слова преобразуется к верхнему регистру
length(s) Возвращает длину строки s в символах
s like(f) Возвращает true, если выражение f совпадает с s
lower (s) Возвращает строку s, преобразованную к нижнему регистру
lpad(s .n [ .c]) Возвращает строку s, дополненную слева содержимым строки с (или пробелами, если аргумент с не задан) до длины n (или усеченную справа до n символов)
ltrim(s [ .f]) Возвращает строку s, в начале которой удалены все символы, входящие в строку f (если аргумент f не задан, усекаются начальные пропуски – пробелы, символы табуляции и т. д.)
octet_length(s) Возвращает длину строки s в байтах
position(b IN s) Возвращает позицию подстроки b в строке s (отсчет начинается с 1)
repeat (s, n) Возвращает строку s, повторенную n раз
rpad(s .n. [ .c]) Возвращает строку s, дополненную справа содержимым строки с (или пробелами, если аргумент с не задан) до длины n (или усеченную слева до n символов)
rtrim(s [ .f]) Возвращает строку s, в конце которой удалены все символы, входящие в строку f (если аргумент f не задан, усекаются конечные пропуски – пробелы, символы табуляции и т. д.)
strpos(s .b) Возвращает позицию подстроки b в строке s (отсчет начинается с 1). Относится к числу функций PostgreSQL и дублирует функцию SQL position(), но с передачей аргументов в стиле С
substr(s .b [. 1]) Выделяет из строки s подстроку, начинающуюся с позиции n (отсчет начинается с 1). Необязательный аргумент 1 определяет максимальную длину подстроки в символах
substring (FROM n FOR 1) Выделяет из строки s подстроку, начинающуюся с позиции n (отсчет начинается с 1). Необязательный аргумент 1 определяет максимальную длину подстроки в символах
to_ascii (s .f) Возвращает строку s, преобразованную из расширенной кодировки f в ASCII
translate(s .f .r) Возвращает строку s, в которой все символы, входящие в строку f, заменяются соответствующими символами строки г
trim (направление f FROM s) Возвращает строку s, в начале и/или в конце которой удалены все символы, входящие в строку f. В аргументе направление передается ключевое слово SQL, определяющее направление усечения (LEADING, TRAILING или BOTH)
upper(s) Возвращает строку s, преобразованную к верхнему регистру

Ниже приведены более подробные описания всех функций, перечисленных в таблице, с указанием аргументов, типов данных и выполняемых действий.

Строковые операторы

В PostgreSQL существует обширный набор строковых операторов для выполнения различных действий, от простой конкатенации текста и сравнения строк до поиска по регулярным выражениям. Строковые операторы работают с типами char, varchar, а также с собственным типом PostgreSQL text.

Ниже описаны основные операторы сравнения и конкатенации, а также реализация операторов регулярных выражений с учетом и без учета регистра символов.

Базовые операторы сравнения

Базовые операторы сравнения строк и конкатенации, поддерживаемые в PostgreSQL, перечислены в табл. 5.1.

ПРИМЕЧАНИЕ

Ключевые слова LIKE и ILIKE, приводящие к вызову функции 11ke(), иногда называются операторами сравнения строк. Эти ключевые слова рассматриваются ниже в разделе «Функции».

Таблица 5.1. Базовые строковые операторы

Оператор

Синтаксис

Описание

= ‘строка!’ = ‘ строка2’ Возвращает true, если первая строка точно совпадает со второй

! =

‘строка!’ != ‘ строка2’

Возвращает true, если первая строка не совпадает со второй

о

‘строка!’ <> ‘ строка2’

Идентичен оператору !=

<

‘строка!’ < ‘ строка2’

Возвращает true, если при лексикографической сортировке первая строка предшествует второй

<=

‘строка!’ <= ‘ строка2’

Возвращает true, если при лексикографической сортировке первая строка предшествует второй или их значения совпадают

>

‘строка!’ > ‘ строка2’

Возвращает true, если при лексикографической сортировке вторая строка предшествует первой

>=

‘строка!’ >= ‘ строка2’

Возвращает true, если при лексикографической сортировке вторая строка предшествует первой или их значения совпадают

Все операторы сравнения строк возвращают логическое значение (true или false). Лексикографическая сортировка, упоминаемая в табл. 5.1, последовательно сравнивает символы строк и определяет, какой из символов «больше» другого. Если начальные символы двух строк совпадают, проверяются следующие символы (слева направо). Перебор продолжается до тех пор, пока не будут найдены два различающихся символа. В этом алгоритме сортировки «больший» символ выбирается сравнением ASCII-кодов, как показывает следующий пример:

booktown=# SELECT letter, ascii(letter)

booktown-# FROM text_sorting

booktown-# ORDER BY letter ASC;

letter ascii

0 48

1 49

2 50

3 51

A 65

В 66

С 67

D 68

a 97

b 98

с 99

d I 100

(12 rows)

Если вы не уверены в порядке сортировки того или иного символа, воспользуйтесь функцией ascii О для получения его ASCII-кода (функция asci i () описана ниже в разделе «Функции»). В листинге 5.3 из таблицы books выбираются названия всех книг, первая буква которых при сортировке предшествует символу «D».

Листинг 5.3. Сравнение строк

booktown=# SELECT title FROM books

booktown=# WHERE substrCtitle, 1, 1) < ‘D1;

title

2001: A Space Odyssey

Bartholomew and the Oobleck

(2 rows)

Конкатенация

Оператор конкатенации (11) играет очень важную роль при форматировании выходных данных. Как и все операторы, он может использоваться в командах SQL всюду, где могут использоваться константы. Допускается последовательная конкатенация строковых значений, для этого перечисляемые строковые константы или идентификаторы разделяются операторами 11.

Например, оператор конкатенации может использоваться в секции WHERE для фильтрации записей на основании сравнения с символьной строкой.

Пример приведен в листинге 5.4.

Листинг 5.4. Конкатенация строк

booktown=# SELECT ‘The Title: ‘ | title || ‘, by ‘ |

booktown-# first_name || ‘ ‘ II lastjiame AS bookjinfo

booktown-# FROM books NATURAL JOIN authors AS a (authorjd) LIMIT 3;

book_info

The Title: The Shining, by Stephen King

The Title: Dune, by Frank Herbert

The Title: 2001: A Space Odyssey, by Arthur C. Clarke

(3 rows)

Операторы регулярных выражений

Если обычного сравнения строк оказывается недостаточно, в PostgreSQL предусмотрены специальные операторы для поиска совпадений по регулярным выражениям. Регулярное выражение похоже на строковую константу, с которой сравнивается исходная строка, но некоторые символы (квадратные скобки, вертикальная черта, обратная косая черта и т. д.) при сравнении интерпретируются особым образом. Если вам доводилось работать с такими программами Unix, как sed, grep или perl, возможно, вы уже знакомы с синтаксисом регулярных выражений.

ПРИМЕЧАНИЕ

Общие сведения о регулярных выражениях приведены в книге Джеффри Фридла (Jeffrey Friedl) «Mastering Regular Expressions».

Регулярное выражение состоит из литералов и метасимволов (специальных символов). Обычно регулярные выражения могут совпадать с несколькими вариантами строковых значений. Пример приведен в листинге 5.5, где в таблице authors ищутся все имена (fi rstjiame), начинающиеся с символа А или Т.

Листинг 5.5. Поиск по регулярному выражению

booktown=# SELECT first_name, last_name

booktown-# FROM authors

booktown-# WHERE firstjiame — "AT1;

fi rstjiame lastjiame

Ariel Denham Tom Christiansen

Arthur C. | Clarke Andrew Brookins

Theodor Seuss j Geisel (5 rows)

Символ ~ в секции WHERE является оператором регулярного выражения, а само регулярное выражение задается строкой ЛА| ЛТ. В него входят специальные символы (метасимволы) л и |, а также литералы А и Т. Метасимволы регулярных выражений описаны ниже в этом пункте.

Важнейшее различие между функцией 11 ke() и операторами регулярных выражений заключается в том, что функция likeO ищет совпадение для всей строки, а операторы регулярных выражений ищут совпадение в произвольной позиции заданной строки, если только в самом регулярном выражении не указано обратное.

Операторы регулярных выражений перечислены в табл. 5.2. Их операндами всегда являются строка с регулярным выражением и текст, в котором ищется совпадение (идентификатор или константа). Все операторы регулярных выражении

возвращают результат логического типа, интерпретация которого зависит от специфики самого оператора.

Таблица 5.2. Операторы регулярных выражений

Оператор

Синтаксис

Описание

‘ строка’ ~ ‘ выражение’

Возвращает true, если в строке существует совпадение для регулярного выражения

i ~

‘строка’ \- ‘выражение’

Возвращает true, если в строке нет совпадения для регулярного выражения

~*

‘ строка’ ~* ‘ выражение’

Возвращает true, если в строке существует совпадение для регулярного выражения (без учета регистра символов)

|_*

‘строка’ !-* ‘выражение’

Возвращает true, если в строке нет совпадения для регулярного выражения (без учета регистра символов)

В табл. 5.3 перечислены метасимволы регулярных выражений. Как было указано выше, в регулярных выражениях эти символы интерпретируются особым образом.

Таблица 5.3. Метасимволы регулярных выражений

Символ

Синтаксис

Описание

^выражение

Соответствует началу строки

$

выражение$

Соответствует концу строки

.

,

Соответствует одному символу

[ ]

[abc]

Соответствует любому из символов, перечисленных в квадратных скобках

Г]

ГаЬс]

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

[-]

[a-z]

Соответствует любому символу из интервала, заданного в квадратных скобках

Г-]

Га-z]

Соответствует любому символу кроме символов из интервала, заданного в квадратных скобках

7

а?

Соответствует нулю экземпляров или одному экземпляру предшествующего символа или подвыражения

*

а*

Соответствует нулю экземпляров или произвольному количеству экземпляров предшествующего символа или подвыражения

+

а+

Соответствует одному и более экземпляров предшествующего символа или подвыражения

1

выражение! \ выражение2

Соответствует левому или правому подвыражению

( )

(выражение!) выражение2

Группировка подвыражений с явным определением приоритета выполняемых операций

ПРИМЕЧАНИЕ

Литералы, совпадающие с метасимволами из табл. 5.3, должны экранироваться в строке двумя символами \ (например, знак $ представляется последовательностью \\$).

Регулярные выражения часто применяются для поиска подстрок в строках-литералах большего размера. При поиске соответствия с учетом регистра символов используется оператор -; с оператором -* регистр игнорируется. Примеры приведены в листинге 5.6.

Листинг 5.6. Простой поиск соответствия

booktown=# SELECT title FROM books

booktown-# WHERE title — ‘The’;

title

The Shining The Cat in the Hat The Velveteen Rabbit

The Tell-Tale Heart

(4 rows)

booktown=# SELECT title FROM books

booktown-f WHERE title -* ‘The’; title

The Shining The Cat in the Hat Bartholomew and

the Oobleck Franklin in the Dark The Velveteen Rabbit

The Tell-Tale Heart

(6 rows)

Как видно из результатов, оператор ~* возвращает две дополнительные записи, поскольку выражение соответствует не только подстроке «the», но и любым модификациям в регистре символов этой подстроки (the, tHe, ThE и т. д.).

Если добавить в начало этого регулярного выражения символ л, оно будет соответствовать только подстроке «The», находящейся в начале исходного текста (листинг 5.7).

Конструкция . * обозначает любое количество произвольных символов до следующего подвыражения. В данном примере этим подвыражением является пара строк в круглых скобках (rabbit и heart), разделенных символом |, что соответствует любой из перечисленных строк.

Листинг 5.7. Нетривиальный поиск соответствия

booktown=f SELECT title FROM books

booktown-# WHERE title -* IAThe.*(rabbit|heart)’;

title

The Velveteen Rabbit The Tell-Tale Heart

(2 rows)

Выражение AThe.*(rabbit|heart) означает следующее: соответствие находится лишь в том случае, если строка начинается с символов «The», далее идет любое количество произвольных символов, а после них следует либо подстрока «rabbit», либо подстрока «heart». Оператор ~* (вместо оператора ~) производит сравнение без учета регистра символов.

В листинге 5.8 приведен пример еще более сложного регулярного выражения.

Листинг 5.8. Сложный поиск соответствия

booktown=# SELECT title FROM books

booktown-# WHERE title ~* ‘rt.*[ri]t) | (ingJjune$)’ :

title

The Shining Dune

The Velveteen Rabbit The Tell-Tale Heart

(4 rows)

booktown=#

На первый взгляд регулярное выражение в листинге 5.8 выглядит устрашающе. Но если разбить его на элементы, становится видно, что оно состоит из двух выражений в круглых скобках, разделенных символом [.Таким образом, соответствие будет найдено, если хотя бы одно из этих выражений указывает на значение в поле title.

Продолжая анализ выражения, мы видим, что подвыражение слева от символа | состоит из следующих элементов (слева направо): метасимвол л, за которым следует символ t, затем последовательность .* и пара квадратных скобок с символами г и i, за которыми следует символ t. В переводе на русский язык это означает, что соответствие должно начинаться с буквы t, за которой следует ноль или более символов, пока не будет встречена буква г или 1, после которой немедленно следует буква t. Если хотя бы одно из этих условий не соблюдается, соответствия нет.

Выражение в правой части устроено проще. Оно состоит из двух литералов ing и une, разделенных очередным символом , причем за каждым литералом следует символ $. В переводе это означает, что совпадение должно заканчиваться подстрокой Ing или une. При выполнении любого (благодаря символу |) из этих условий соответствие считается найденным.

Рассмотрим более подробно возможности PostgreSql, в части поиска данных по шаблону. А именно поиск, с помощью стандартного оператора LIKE, более современного SIMILAR TO (был добавлен в SQL:1999 и поддерживается всеми современными СУБД), и с помощью регулярных выражений.

Все они возвращают булевое значение (TRUE или FALSE).

Самый простой вариант, это использовать оператор LIKE.

Например:

Можно также, воспользоваться регистр-независимым поиском с помощью оператора ILIKE.

Если вам, недостаточно возможностей оператора LIKE, то можно использовать SIMILAR TO. Он расширяет возможности LIKE, с помощью некоторых операторов регулярных выражений.

  • | означает выбор (одного из двух вариантов).
  • * означает повторение предыдущего элемента 0 и более раз.
  • + означает повторение предыдущего элемента 1 и более раз.
  • ? означает вхождение предыдущего элемента 0 или 1 раз.
  • {m} означает повторяет предыдущего элемента ровно m раз.
  • {m,} означает повторение предыдущего элемента m или более раз.
  • {m,n} означает повторение предыдущего элемента не менее чем m и не более чем n раз.
  • Скобки () объединяют несколько элементов в одну логическую группу.
  • Квадратные скобки […] обозначают класс символов так же, как и в регулярных выражениях POSIX.

Пример операторов SIMILAR TO и NOT SIMILAR TO:

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

Оператор Описание
~ Проверяет соответствие регулярному выражению с учётом регистра
!~ Проверяет несоответствие регулярному выражению с учётом регистра
~* Проверяет соответствие регулярному выражению без учёта регистра
!~* Проверяет несоответствие регулярному выражению без учёта регистра

Пример запросов, построенных с помощью регулярных выражений:

Если вам помогла статья, пожалуйста перейдите по одному из рекламных блоков, расположенных на сайте. Таким образом вы поддержите проект. Спасибо

Posted on 2017-03-20

Функции для работы с датой и временем

В PostgreSQL поддерживаются как стандартные функции SQL current_date, current_time и current_timestamp, так и множество нестандартных функций. Функции PostgreSQL, предназначенные для работы с датой и временем, перечислены в табл. 5.11.

Таблица 5.11. Функции для работы с датой и временем

Функция

Описание

current date

Возвращает текущую дату в виде значения типа date

current time

Возвращает текущее время в виде значения типа time

current timestamp

Возвращает текущие дату и время в виде значения типа timestamp

date_part(s.

t)

Выделяет из значения типа timestamp компонент даты или времени, определяемый строкой s

date_part(s. i)

Выделяет из значения типа interval компонент даты или времени, определяемый строкой s

date trunc(s, t)

Возвращает значение типа timestamp, усеченное до точности s

extract (k FROM t)

Выделяет из значения типа timestamp компонент даты или времени, определяемый ключевым словом k

extracttk FROM i)

Выделяет из значения типа interval компонент даты или времени, определяемый ключевым словом k

isfinite(t)

Возвращает true, если значение типа timestamp соответствует конечной величине (не invalid и не infinity)

isfinite(i)

Возвращает true, если значение типа interval соответствует конечной величине (не infinity)

now()

Возвращает текущие дату и время в виде значения типа timestamp. Эквивалент константы now

timeofdayO

Возвращает текущие дату и время в виде значения типа text

Ниже приведены более подробные описания всех функций, перечисленных в таблице. Обратите внимание на отсутствие круглых скобок в определениях функций current_date, current_time и current_timestamp — это сделано для сохранения совместимости со стандартом SQL92.

current_date

Синтаксис:

current_date

Функция current_date вызывается без аргументов и возвращает текущую дату в виде значения типа date. Результат эквивалентен преобразованию специальной константы now к типу date.

Пример

booktown=# SELECT current_date,

booktown-# ‘now’::date AS date;

date date

2001-08-31 | 2001-08-31

(1 row)

current_time

Синтаксис:

current_time

Функция current_time вызывается без аргументов и возвращает текущее время в виде значения типа time. Результат эквивалентен преобразованию специальной константы now к типу time.

Пример

booktown=# SELECT current_time,

booktown-# ‘now’::time AS time;

time | time

11:36:52 | 11:36:52

(1 row)

current_timestamp

Синтаксис:

current_timestamp

Функция current_timestamp вызывается без аргументов и возвращает текущее время в виде значения типа timestamp. Результат эквивалентен преобразованию специальной константы now к типу timestamp или вызову функции now().

Пример

booktown=# SELECT current_timestamp.

booktown-# now() AS timestamp;

timestamp | timestamp

2001-08-31 11:39:42-07 2001-08-31 11:39:42-07

(1 row)

date_part()

Синтаксис:

date_part(s. t) date_part(s. i)

Функция date_part() получает два аргумента. Первый аргумент s относится к типу text, а второй, t или I, — к типу timestamp или interval соответственно. Функция выделяет во втором аргументе компонент, определяемый строкой s, и возвращает его в виде значения типа doubl e preci si on.

Чтобы лучше понять, как работает функция date_part(), представьте, что значение типа timestamp или interval делится на компоненты — часы, минуты и т. д. Эти компоненты (и соответственно допустимые значения аргумента s) перечислены в табл. 5.12. Помните, что некоторые значения относятся только к типу tlmestamp и не поддерживаются для типа Interval.

Таблица 5.12. Компоненты типов timestamp и interval

Компонент

Описание

century

Год, разделенный на 100 (не совпадает с текущим веком!)

day

День месяца (от 1 до 31) для типа timestamp, продолжительность интервала в днях для типа interval

decade

Год, разделенный на 10

dow

День недели (от 0 до 6), начиная с воскресенья. Для типа interval не поддерживается

doy

День года (от 1 до 366). Для типа interval не поддерживается

epoch

Количество секунд от начала эпохи (1 января 1970 г.) для типа timestamp, продолжительность интервала в секундах для типа interval

hour

Час в значении типа timestamp

microseconds

Количество миллионных долей в дробной части секунд для значения типа timestamp

millennium

Год, разделенный на 1000 (не совпадает с текущим тысячелетием!)

mi 11 i seconds

Количество тысячных долей в дробной части секунд для значения типа timestamp

minute

Минуты в значении типа timestamp или interval

month

Месяц в значении типа timestamp или остаток от деления продолжительности интервала в месяцах на 12 для типа interval

quarter

Квартал (от 1 до 4) для значений типа timestamp

second

Секунды в значении типа timestamp или interval

week

Номер недели в году для значений типа timestamp.

В стандарте ISO-8601 первая неделя года определяется как неделя, в которую входит 4 января

year

Год в значении типа timestamp или interval

Примеры

booktown=# SELECT date_part(‘minute’.

booktown(# intervalC3 days 4 hours 12 minutes’)):

date_part

12

(1 row)

booktown=# SELECT isbn,

booktown-l date_part(‘year’, publication)

booktown-# FROM editions

booktown-# ORDER BY date_part ASC

booktown-# LIMIT 3;

isbn | date_part

0760720002 | 1868

0679803335 | 1922

0694003611 | 1947

(3 rows)

ПРИМЕЧАНИЕ

Аналогом функции date_part() в SQL является функция extract().

date_trunc()

Синтаксис: date_trunc(s. t)

Функция date_trunc () получает два аргумента s и t, относящихся к типам text и timestamp соответственно. Строка s определяет компонент, до которого усекается аргумент t. В данном контексте под усечением понимается удаление всех компонентов, детализация которых превышает заданную.

Допустимые значения аргумента s перечислены в табл. 5.12.

Пример

booktown=# SELECT date_trune(‘minute’, now());

date trunc

2001-08-31 09:59:00-07

(1 row)

booktown=# SELECT date_trunc( ‘hour’, now());

date trunc

2001-08-31 09:00:00-07 (1 row)

booktown=# SELECT date_trunc(‘year’, now());

date trunc

2001-01-01 00:00:00-08

(1 row)

extract()

Синтаксис:

extract(k FROM t) extract(k FROM 1)

Функция SQL92 extractO представляет собой аналог функции PostgreSQL date_part() со слегка измененным синтаксисом. При перечислении аргументов вместо запятой используется ключевое слово FROM. Аргументы аналогичны аргументам функции date_part(), хотя первый аргумент является ключевым словом SQL, а не строкой и поэтому не заключается в кавычки. Допустимые значения k перечислены в табл. 5.12.

Учтите, что функция extractO является «псевдонимом» функции PostgreSQL date_part () в синтаксисе SQL92, поэтому по умолчанию в выходных данных функция extract() представляется именем date_part.

Примеры

booktown=# SELECT extract(MINUTE FROM

interval(‘3 days 12 minutes1)): datejpart

12

(1 row)

booktown=# SELECT extractCMONTH FROM now()):

date_part

8

(1 row)

isfinite()

Синтаксис:

isfinite(t) isfinite(i)

Функция 1 sf 1 ni te() получает один аргумент типа timestamp или 1 interval. Она возвращает true, если переданное значение не является бесконечным, созданным при помощи специальной константы Infinity или invalid (используется только для timestamp).

Пример

booktown=# SELECT isfinite(‘now’::timestamp) AS now_is_finite,

booktown-# isfinite(‘infinity’::timestamp) AS Infinity,

booktown-# isfiniteC’invalid’::timestamp) AS invalid;

now_is_finite | infinity | invalid

(1 row)

now()

Синтаксис:

now()

Функция now() вызывается без аргументов и возвращает текущую дату и время в виде значения типа timestamp.

Пример

booktown=# SELECT now();

now

2001-08-31 10:31:18-07

(1 row)

timeofday()

Синтаксис: timeofdayO

Функция timeofday() вызывается без аргументов и возвращает текущие время и дату. Она похожа на функцию now(), но возвращает значение типа text. Это делает ее менее удобной, поскольку значение не разделяется на компоненты функциями date_part() и to_char() без предварительного преобразования к другому типу.

Пример

Dooktown=# SELECT timeofday();

timeofday

Fn Aug 31 10:33:00.837338 2001 PDT

(1 row)

Добавить комментарий

Закрыть меню