我偶然发现了这个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'是第一个例子中的类型转换吗? 两个检查是否相同?这两者之间是否有任何性能差异?
答案 0 :(得分:1)
第一种语法:'2015-08-11 18:30:00'
是用于编写时间戳文字的标准ANSI SQL,它也用于日期:date '2015-08-11'
或仅用于时间值:time '18:30:00'
。这是一个常数&#34;价值,而不是&#34;演员&#34;类似于简单地将'foobar'
写为varchar常量。
第二种形式是从文本值到时间戳的强制转换,并且是Postgres特定的。