2017-01-12 38 views
0

之间的区别我偶然发现了这个S.O question,其中提到,检查约束,必须这样写的: CHECK (ts >= timestamp '2015-08-11 00:00:00' AND ts < timestamp '2015-08-12 00:00:00')Postgres的:时间戳“myTimestamp”和“myTimestamp” ::时间戳

我亲自写我喜欢的类型强制转换像这样: CHECK (ts >= '2015-08-11 00:00:00'::timestamp AND ts < '2015-08-12 00:00:00'::timestamp)

'timestamp'是第一个例子中的类型转换吗? 这两项检查是否相同?两者之间有什么表现差异?

+0

@a_horse_with_no_name谢谢!这对我来说瞬间变得更有意义。 – Stanislasdrg

回答

1

第一语法:'2015-08-11 18:30:00'是标准的ANSI SQL写一个时间戳文字,这也是用于日期:date '2015-08-11'或只是一个时间值:time '18:30:00'。这是一个“常量”值,而不是类似于简单地将'foobar'作为varchar常量的“cast”类型。

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