Вибрали чийсь код, і це частина пропозиції 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 .. Для вбудованих визначених користувачем функцій, які повертають скалярне значення, ім'я функції повинно бути вказано як однокомпонентне ім'я (не вказувати базу даних або власника). Не вказуйте провідну подвійну двокрапку (: :).
У MS SQL Server 2005:
Двокрапки більше не потрібні для UDF, які повертають таблицю.
Однак ...
Подвійні двокрапки потрібні в SQL Server 2005 під час надання дозволів на схеми, сертифікати, кінцеві точки та деякі інші захисні засоби.
Так само, як...
При використанні визначених користувачем типів, статичні методи типу повинні викликатися із використанням синтаксису подвійного двокрапки.
Джерела: BOL та блог Калена Делані
У цьому випадку це приклад для типу дати. :: є типом, який також може бути представлений як CAST (вираз AS type).
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 ).