SQL中的双冒号(:)表示法
已经拿起某人的代码,这是一个where子句的一部分,任何人都知道双冒号指示什么?
b.date_completed > a.dc::date + INTERVAL '1 DAY 7:20:00'
它根据RDBMS而有所不同,但如果我猜对了,那就是PostgreSQL,在这种情况下, ::
将a.dc
转换为datetypes。
在其他口味…
在MS SQL Server 2000中:
对于返回表的内置用户定义函数,必须使用前导双冒号(:)来指定函数名称,以将其与不是内置的用户定义函数区分开来。 它也必须被指定为没有数据库或所有者资格的单一部分名称。 例如:SELECT * FROM :: fn_helpcollations()b ..对于返回标量值的内置用户定义函数,必须将函数名称指定为单部分名称(不指定数据库或所有者)。 不要指定一个前导双冒号(::)。
在MS SQL Server 2005中:
对于返回表的UDF,不再需要双冒号。
然而…
授予架构,证书,端点和其他一些安全措施的权限时,SQL Server 2005中需要双冒号。
以及…
使用用户定义types时,必须使用双冒号语法来调用该types的静态方法。
资料来源: BOL和Kalen Delaney的博客
在这种情况下,它是对datetypes的转换。 ::是一个types转换,也可以表示为CAST(expression式AStypes)。
这可能是一个a.dc
转换,将a.dc
转换为date
types。
IBM Informix Dynamic Server(IDS)将以这种方式工作 – 但最后的INTERVAL表示法对于IDS无效,所以这可能是另一个DBMS(可能是PostgreSQL )。