web-dev-qa-db-ja.com

SQLの二重コロン(::)表記

誰かのコードを取得しましたが、これはwhere句の一部です。だれでも、二重コロンが示すことを知っていますか?

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

それはRDBMSに基づいて異なりますが、私が正しいと思うなら、それはPostgreSQLです。その場合、::変換a.dcからdateの日付タイプに。

他のフレーバーで...

MS SQL Server 2000の場合:

テーブルを返す組み込みのユーザー定義関数の場合、組み込みではないユーザー定義関数と区別するために、関数名に先頭に二重コロン(::)を指定する必要があります。また、データベースまたは所有者の資格を持たない1部構成の名前として指定する必要があります。 SELECT * FROM :: fn_helpcollat​​ions()b ..スカラー値を返す組み込みのユーザー定義関数の場合、関数名は1部構成の名前として指定する必要があります(データベースまたは所有者を指定しないでください)。先頭の二重コロン(::)を指定しないでください。

MS SQL Server 2005の場合:

テーブルを返すUDFにダブルコロンは不要になりました。

しかしながら...

SQL Server 2005では、スキーマ、証明書、エンドポイント、および他のいくつかのセキュリティ保護可能なものに対するアクセス許可を付与するときに、ダブルコロンが必要です。

と同様...

ユーザー定義型を使用する場合、ダブルコロン構文を使用してその型の静的メソッドを呼び出す必要があります。

出典: [〜#〜] bol [〜#〜] および Kalen Delaney's Blog

56

この場合、日付型へのキャストです。 ::は、CAST(expression AS type)としても表現できる型キャストです。

19
Michael Dean

CAST操作(日付型にキャスト)です。

例:

SELECT now()::timestamp(0);

以下と同等です:

_SELECT 
    CAST (now() AS timestamp(0));
_

両方とも、次の形式でnow()timestampにキャストします:_YYYY-MM-DD HH:MM:SS_

2
techkuz

おそらくキャストであり、a.dcを入力してdateと入力します。

IBM Informix Dynamic Server(IDS)はそのように機能しますが、最後のINTERVAL表記はIDSに対して有効ではないため、これはおそらく実際には別のDBMS(おそらく PostgreSQL )です。

1