Varia de acordo com o RDBMS, mas se eu acertar, é o PostgreSQL, nesse caso o
::
converte a.dc
para um tipo de data de date
. Em outros sabores...
No MS SQL Server 2000:
Para funções definidas pelo usuário internas que retornam uma tabela, o nome da função deve ser especificado com dois-pontos duplos à esquerda (::) para distingui-la das funções definidas pelo usuário que não são internas. Ele também deve ser especificado como um nome de uma parte sem banco de dados ou qualificações de proprietário. Exemplo:SELECT * FROM::fn_helpcollations() b.. Para funções internas definidas pelo usuário que retornam um valor escalar, o nome da função deve ser especificado como um nome de uma parte (não especifique o banco de dados ou proprietário). Não especifique dois-pontos duplos à esquerda (::).
No MS SQL Server 2005:
Dois-pontos duplos não são mais necessários para UDFs que retornam uma tabela.
No entanto...
Dois-pontos duplos são necessários no SQLServer 2005 ao conceder permissões em esquemas, certificados, pontos de extremidade e alguns outros protegíveis.
Assim como...
Ao usar tipos definidos pelo usuário, métodos estáticos do tipo devem ser chamados usando a sintaxe de dois pontos.
Fontes:Blog de BOL e Kalen Delaney