Sql Postgres数据类型声明和类型,什么';双冒号和不冒号的区别是什么 主要问题
我想知道在Postgres中使用双分号Sql Postgres数据类型声明和类型,什么';双冒号和不冒号的区别是什么 主要问题,sql,postgresql,types,casting,Sql,Postgresql,Types,Casting,我想知道在Postgres中使用双分号::声明类型与不使用::声明类型有什么区别 例子 间隔“1天” --vs “1天”::间隔 还有很多问题。。。 是类型转换吗?类似于将字符串强制转换为间隔 如果不使用::,您会将第一个示例称为什么?或者,如果不使用强制转换,您是如何定义该数据类型的 使用其中一个比另一个有什么好处吗 一个先介绍另一个吗 有速度优势吗 在社区中,一种方法是否标准化并优于另一种方法 是否有社区风格的指南文档 这是Postgres独有的,还是同样适用于SQL 很抱歉问了这么多
::
声明类型与不使用::
声明类型有什么区别
例子
间隔“1天”
--vs
“1天”::间隔
还有很多问题。。。
- 是类型转换吗?类似于将字符串强制转换为
间隔
- 如果不使用
,您会将第一个示例称为什么?或者,如果不使用强制转换,您是如何定义该数据类型的::
- 使用其中一个比另一个有什么好处吗
- 一个先介绍另一个吗
- 有速度优势吗
- 在社区中,一种方法是否标准化并优于另一种方法
- 是否有社区风格的指南文档
- 这是Postgres独有的,还是同样适用于SQL
很抱歉问了这么多问题 我可以将
间隔“1天”
称为间隔文字。这意味着,在没有任何强制转换的情况下,它会声明一个文字PostgresINTERVAL
值。另一方面,'1day':INTERVAL
实际上是文本1day
的一个转换,使其成为INTERVAL
值
:
强制转换语法不是ANSI标准的一部分,而是专为Postgres设计的。请注意,CAST('1天'作为间隔)
与使用双冒号'1天':INTERVAL
语法大致相同
如果您担心有一天可能要将Postgres SQL代码移植到另一个数据库,那么您可能会坚持使用CAST()
而不是:
,大多数其他数据库都支持前者
就性能而言,
INTERVAL'1 day'
不要求Postgres执行任何显式强制转换操作,而CAST
或:
确实需要显式强制转换。可能会有一些小的性能差异。现在看到literal
我觉得很傻。这是我在脑海中找不到的一个词:type literal
注意interval'1 day'
是标准ANSI SQLinterval'1'day的一个特定于Postgres的变体