在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

postgresql timestamp該如何使用

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

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

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

    如果非要以數(shù)值類型查出來,目前好像也沒有辦法能夠查到其原始的8字節(jié)數(shù)值,但是可以通過下述方法"曲線救國" —— 即把TIMESTAMP類型轉(zhuǎn)換為Unix時(shí)間戳(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的用法可以參照手冊(cè)9.9. Date/Time Functions and Operators

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

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

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

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

2017年2月19日 21:08