Подняли чей-то код, и это часть предложения where, кто-нибудь знает, что указывает двойной двоеточие?
b.date_completed > a.dc::date + INTERVAL '1 DAY 7:20:00'
Подняли чей-то код, и это часть предложения where, кто-нибудь знает, что указывает двойной двоеточие?
b.date_completed > a.dc::date + INTERVAL '1 DAY 7:20:00'
Он зависит от СУБД, но если я правильно понимаю, что PostgreSQL, в этом случае ::
преобразует a.dc
в тип даты date
.
В других ароматах...
В MS SQL Server 2000:
Для встроенных пользовательских функций которые возвращают таблицу, имя функции должен быть указан ведущим двойной двоеточие (::), чтобы отличить его от пользовательских функций, которые не встроенный. Это также должно быть указано как одночастное имя без базы данных или владельца. Для пример: SELECT * FROM:: fn_helpcollations() b.. Для встроенных пользовательские функции, которые возвращают скалярное значение, имя функции должно указывается как одностраничное имя (do не указывать базу данных или владельца). Не укажите ведущую двойную двоеточие (::).
В MS SQL Server 2005:
Двойные двоеточия больше не требуются для UDF, которые возвращают таблицу.
Однако...
В SQL требуются двойные двоеточия Сервер 2005 при предоставлении разрешений на схемах, сертификатах, конечных точках, и еще несколько других продуктов.
Также как...
При использовании пользовательских типов статические методы типа должны быть вызваны используя синтаксис с двойной колонкой.
Источники: BOL и Блог Калена Делани
В этом случае это приведение к типу даты.:: - это тип, который также может быть представлен как CAST (тип выражения AS).
Это операция CAST
(приведена к типу даты).
Пример:
SELECT now()::timestamp(0);
Эквивалентно:
SELECT
CAST (now() AS timestamp(0));
Они оба приводят к приведению now()
к timestamp
в следующем формате: YYYY-MM-DD HH:MM:SS
Вероятно, это отличное преобразование a.dc
для ввода date
.
IBM Informix Dynamic Server (IDS) будет работать именно так, но нотация INTERVAL в конце недействительна для IDS, поэтому предположительно это фактически другая СУБД (возможно, PostgreSQL).