[sql] SQL의 이중 콜론 (: :) 표기법

누군가의 코드를 가져 왔고 이것은 where 절의 일부입니다. 이중 콜론이 무엇을 나타내는 지 아는 사람이 있습니까?

b.date_completed >  a.dc::date + INTERVAL '1 DAY 7:20:00'



답변

그것은 RDBMS 기반으로하지만, 내가 바로 추측 경우, 즉, PostgreSQL을있어 변화하는 케이스에서 ::회심 a.dc의 날짜 형식을 date.

다른 맛으로 …

MS SQL Server 2000에서 :

테이블을 리턴하는 내장 사용자 정의 함수의 경우 내장되지 않은 사용자 정의 함수와 구별하기 위해 함수 이름은 선행 이중 콜론 (: :)으로 지정되어야합니다. 또한 데이터베이스 또는 소유자 자격이없는 한 부분 이름으로 지정되어야합니다. 예 : SELECT * FROM :: fn_helpcollations () b .. 스칼라 값을 반환하는 내장 사용자 정의 함수의 경우 함수 이름은 한 부분으로 된 이름으로 지정되어야합니다 (데이터베이스 또는 소유자를 지정하지 마십시오). 선행 이중 콜론 (: :)을 지정하지 마십시오.

MS SQL Server 2005에서 :

테이블을 반환하는 UDF에는 더 이상 이중 콜론이 필요하지 않습니다.

하나…

SQL Server 2005에서는 스키마, 인증서, 끝점 및 기타 몇 가지 보안 개체에 대한 권한을 부여 할 때 이중 콜론이 필요합니다.

만큼 잘…

사용자 정의 유형을 사용하는 경우 유형의 정적 메서드는 이중 콜론 구문을 사용하여 호출해야합니다.

출처 : BOLKalen Delaney의 블로그


답변

이 경우 날짜 유형으로 캐스트됩니다. ::는 CAST (expression AS type)로도 표현할 수있는 유형 캐스트입니다.


답변

그것은이다 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에 대해 유효하지 않으므로 실제로 이것은 다른 DBMS (아마도 PostgreSQL ) 일 것입니다 .


답변