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


90

誰かのコードを拾いました、そしてこれはwhere句の一部です、誰かが二重コロンが何を示しているか知っていますか?

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


回答:


67

RDBMSによって異なりますが、私が正しく推測すると、それはPostgreSQLであり、その場合、日付型は。に::変換さa.dcdateます。

他のフレーバーでは...

MS SQL Server 2000の場合:

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

MS SQL Server 2005の場合:

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

しかしながら...

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

と同様...

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

出典:BOLKalenDelaneyのブログ


SQL 2008 MCTS模擬試験でUDFで使用されるこの構文に出くわしましたが、本のどこにも言及されていません。説明してくれてありがとう
ソフィア

27

この場合、それは日付型へのキャストです。::は、CAST(式ASタイプ)としても表現できる型キャストです。


それを確かに知っているなら、多分あなたはこのスクリプトが何のためのRDBMSであるか知っていますか?
Andriy M

私にはPostgreSQLのように見えます。同じ構文を持つ代替案を知っていますか?
Michael Dean

二重コロン表記をサポートするいくつかのRDBMSを知っていますINTERVAL。また、サポートを備えた他のいくつかのRDBMSを知っています。これは、両方を組み合わせた、私が今まで見た最初のコードです。ちょっと気になっただけ。返信いただきありがとうございます。
Andriy M

14

これは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.