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