鍍金池/ 問答/PHP  數(shù)據(jù)庫/ postgresql timestamp該如何使用

postgresql timestamp該如何使用

1,postgresql timestamp在表中的原始數(shù)據(jù)是數(shù)值還是格式化好的時間字符串?
2,如果是格式化的字符串,那他自己排序是不是性能很差?
3,如果是數(shù)值,可否直接按照數(shù)值查出來呢?

回答
編輯回答
故人嘆
  1. TIMESTAMP類型在表中存儲的內(nèi)部形式是一個8字節(jié)數(shù)值, 可表示的時間范圍是 公元前4713年~公元294276年,最小單位是微妙(microsecond)
  2. 因為是數(shù)值,所以你不用擔心其排序性能
  3. 這個問題比較復(fù)雜

    TIMESTAMP類型雖然是一個8字節(jié)數(shù)值,但是為了向用戶屏蔽內(nèi)部細節(jié),它的輸出都是以字符串的形式來輸出時間戳的(時間戳的格式可以指定)。從道理上,PG社區(qū)并不希望直接把內(nèi)部數(shù)值暴露到外部。

    如果非要以數(shù)值類型查出來,目前好像也沒有辦法能夠查到其原始的8字節(jié)數(shù)值,但是可以通過下述方法"曲線救國" —— 即把TIMESTAMP類型轉(zhuǎn)換為Unix時間戳(1970 年 1 月 1 日(00:00:00 GMT)以來)后以整型顯示:

    假設(shè)有下面一張表

    CREATE TABLE foobar (col1 INTEGER, col2 TIMESTAMP);

    那么想以所謂的數(shù)值形式查詢col2的值的SQL語句如下:

    SELECT CAST(EXTRACT(EPOCH FROM col2) AS INTEGER) FROM foobar;

    關(guān)于EPOCH的用法可以參照手冊9.9. Date/Time Functions and Operators

2018年7月15日 15:05
編輯回答
鹿惑

PostgreSQL 提供 timestamp 數(shù)據(jù)類型。

https://www.postgresql.org/do...

所以不要以字符串或者整數(shù)存儲 timestamp 數(shù)據(jù),會帶來存儲和查詢性能上的代價。

2017年2月19日 21:08