2017-01-12 54 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特定的。