Справочник по функциям

::

Конструкция SQL
Аналог в MySQL:

Приводит значение к указанному типу — короткая запись CAST(value AS type), которая есть только в PostgreSQL.

PostgreSQL 17.5
value::type

Параметры

value
Значение для преобразования
typeтип данных
Целевой тип данных, например integer, numeric, date или text

Возвращаемое значение

Значение указанного типа; при неудачном преобразовании — ошибка запроса

Примеры

Строка в число и дату, дробь в целое

PostgreSQL 17.5
SELECT '42'::integer + 1 AS number,
	'2024-03-08'::date AS DAY,
	3.7::integer AS rounded;
numberdayrounded
432024-03-084

Дата и текст из столбцов

PostgreSQL 17.5
SELECT member_name,
	birthday::date AS birth_date,
	member_id::text AS id_text
FROM FamilyMembers;
member_namebirth_dateid_text
Headley Quincey1960-05-131
Flavia Quincey1963-02-162
Andie Quincey1983-06-053
Lela Quincey1985-06-074
Annie Quincey1988-04-105
Ernest Forrest1961-09-116
Constance Forrest1968-09-067
Wednesday Addams2005-01-138

Целочисленное и точное деление

PostgreSQL 17.5
SELECT 10 / 4 AS integer_division,
	10::numeric / 4 AS exact_division;
integer_divisionexact_division
22.5000000000000000

Подробности

value::type делает то же, что CAST(value AS type), и подчиняется тем же правилам: например, '3.7'::integer вызывает ошибку, а 3.7::integer округляется до 4.

Оператор :: выполняется раньше арифметики: в 10::numeric / 4 к numeric приводится только 10, и деление становится точным. Чтобы привести целое выражение, возьмите его в скобки: (amount * unit_price)::text.

Смотрите также

Где изучить