Postgres:时间戳'myTimestamp'和'myTimestamp':: timestamp之间的差异

时间:2017-01-12 15:57:24

标签: postgresql

我偶然发现了这个S.O question,它提到必须像这样写一个检查约束: CHECK (ts >= timestamp '2015-08-11 00:00:00' AND ts < timestamp '2015-08-12 00:00:00')

我个人在写我的类型演员: CHECK (ts >= '2015-08-11 00:00:00'::timestamp AND ts < '2015-08-12 00:00:00'::timestamp)

'timestamp'是第一个例子中的类型转换吗? 两个检查是否相同?这两者之间是否有任何性能差异?

1 个答案:

答案 0 :(得分:1)

第一种语法:'2015-08-11 18:30:00'是用于编写时间戳文字的标准ANSI SQL,它也用于日期:date '2015-08-11'或仅用于时间值:time '18:30:00'。这是一个常数&#34;价值,而不是&#34;演员&#34;类似于简单地将'foobar'写为varchar常量。

第二种形式是从文本值到时间戳的强制转换,并且是Postgres特定的。