已经找到某人的代码,这是where子句的一部分,任何人都知道双冒号表示什么?
b.date_completed > a.dc::date + INTERVAL '1 DAY 7:20:00'
答案 0 :(得分:56)
它根据RDBMS而有所不同,但如果我猜对了,那就是PostgreSQL,在这种情况下,::
会将a.dc
转换为日期类型date
。
其他风味......
在MS SQL Server 2000中:
用于内置的用户定义函数 返回一个表,函数名 必须用前导指定 双冒号(::)来区分它 来自用户定义的函数 不是内置的。它也必须如此 指定为单部分名称,没有 数据库或所有者资格。对于 示例:SELECT * FROM :: fn_helpcollations()b ..用于内置 用户定义的函数返回一个 标量值,函数名称必须 被指定为一个部分的名称(做 不指定数据库或所有者)。不要 指定一个前导双冒号(::)。
在MS SQL Server 2005中:
不再需要双冒号 对于返回表的UDF。
然而......
SQL中需要双冒号 授予权限时的Server 2005 在模式,证书,端点, 还有一些其他的安全措施。
以及......
使用用户定义类型时,静态 必须调用该类型的方法 使用双冒号语法。
答案 1 :(得分:19)
在这种情况下,它是对日期类型的强制转换。 ::是一个类型转换,也可以表示为CAST(表达式AS类型)。
答案 2 :(得分:2)
这是一个CAST
操作(转换为日期类型)。
示例:
SELECT now()::timestamp(0);
等效于:
SELECT
CAST (now() AS timestamp(0));
它们都导致将now()
转换为timestamp
,格式如下:YYYY-MM-DD HH:MM:SS
答案 3 :(得分:1)
可能是演员,将a.dc
转换为date
类型。
IBM Informix Dynamic Server(IDS)会以这种方式工作 - 但最后的INTERVAL表示法对于IDS无效,所以可能这实际上是另一个DBMS(可能是PostgreSQL)。