Det varierar beroende på RDBMS, men om jag gissar rätt är det PostgreSQL, i vilket fall ::
konverterar a.dc
till en datumtyp av date
.
I andra smaker...
I MS SQL Server 2000:
För inbyggda användardefinierade funktioner som returnerar en tabell måste funktionsnamnet anges med ett ledande dubbelkolon (::) för att skilja det från användardefinierade funktioner som inte är inbyggda. Det måste också anges som ett endelat namn utan databas- eller ägarekvalifikationer. Exempel:SELECT * FROM::fn_helpcollations() b.. För inbyggda användardefinierade funktioner som returnerar ascalärt värde måste funktionsnamnet anges som ett endelat namn (ange inte databas eller ägare). Ange inte ett inledande dubbelkolon (::).
I MS SQL Server 2005:
Dubbla kolon krävs inte längre för UDF:er som returnerar en tabell.
Men...
Dubbla kolon krävs i SQLServer 2005 när du beviljar behörigheter för scheman, certifikat, slutpunkter och några andra säkerhetsobjekt.
Samt...
När du använder användardefinierade typer måste statiska metoder av typen anropas med syntaxen med dubbla kolon.
Källor:BOL och Kalen Delaneys blogg