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


84

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

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


답변:


64

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

다른 맛으로 ...

MS SQL Server 2000에서 :

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

MS SQL Server 2005에서 :

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

하나...

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

만큼 잘...

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

출처 : BOLKalen Delaney의 블로그


SQL 2008 MCTS 연습 시험에서 UDF와 함께 사용되는이 구문을 발견했습니다. 책의 어느 곳에서도 언급되지 않았습니다! 설명 감사합니다
소피아

24

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


확실히 알고 있다면이 스크립트가 어떤 RDBMS를위한 것인지 알고 계십니까?
Andriy M

나에게 PostgreSQL처럼 보입니다. 동일한 구문을 가진 대안을 알고 있습니까?
Michael Dean

이중 콜론 표기법을 지원하는 RDBMS에 대해 알고 있으며 INTERVAL지원 기능을 제공하는 다른 RDBMS도 알고 있습니다. 이것은 내가 본 코드 중 두 가지를 결합한 첫 번째 코드입니다. 나는 단지 궁금했다. 답장을 보내 주셔서 감사합니다.
Andriy M

10

그것은이다 CAST(날짜 형식으로 캐스팅) 작업.

예:

SELECT now()::timestamp(0);

다음과 동일합니다.

SELECT 
    CAST (now() AS timestamp(0));

그들은 주조 모두 결과 now()timestamp다음과 같은 형식 :YYYY-MM-DD HH:MM:SS


또 다른 간단한 예는 다음과 같습니다. select 1.2::integer, 결과를 1.
테마 필드

0

아마도 a.dc유형으로 변환하는 캐스트 일 것입니다 date.

IBM Informix Dynamic Server (IDS)는 그런 방식으로 작동합니다.하지만 끝에있는 INTERVAL 표기법은 IDS에 대해 유효하지 않으므로 실제로 이것은 다른 DBMS (아마도 PostgreSQL ) 일 것입니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.