В тех случаях, когда Firebirdне может выполнить неявное преобразование типов, требуется выполнять явное преобразование с помощью функции CAST. Эта функция производит преобразование значения выражения, заданного первым аргументом, в тип, заданный вторым аргументом. Синтаксис функции:
CAST (<выражение> AS <типданных>).
В качестве типа данных нельзя указывать домены.
В большинстве случаев использование функции CAST не требуется, так как Firebird производит неявное преобразование типов данных. Например, сравнение столбца типа DATE с датой '12/31/2003' приведет к неявному преобразованию строкового литерала '12/31/2003' в тип данных DATE и следующий запрос является корректным:
SELECT * FROM Request WHERE IncomingDate > '01.10.2001';.
Можно использовать функцию CAST для сравнения столбцов с различными типами данных из одной и той же таблицы или из различных таблиц.
С помощью CAST можно выполнять преобразование из одного типа дата/время в другой. В табл. 3.3 представлены правила преобразования [18].
Таблица 3.3. Преобразования между типами дата/время
|
Исходный тип |
В тип TIMESTAMP |
В тип DATE |
В тип TIME |
|
TIMESTAMP |
Недоступно |
Да, преобразует дату, игнорируя время |
Да, преобразует время, игнорируя дату |
|
DATE |
Да, время устанавливается в значение полуночи |
Недоступно |
Нет |
|
TIME |
Да, дате присваивается значение CURRENT_DATE |
Нет |
Недоступно |
|
Нет |
|
Нет |
DATE+TIME Да
Можно также преобразовывать правильно сформированную строку в тип «дата-время». Например, значение с типом даты из трех значений дня, месяца и года можно получить следующим образом:
CAST(DAY || '. ' || MONTH || '. ' || YEAR AS DATE), где DAY, MONTH и YEAR могут представлять собой константы либо столбцы таблицы, в которых содержится значение дня, месяца или года соответственно.
предыдущаяследующая