Postgresql 日期和時間型別
阿新 • • 發佈:2019-01-31
timestamp with[out] time zone 日期時間(時區) time with[out] time zone 只用於一日內的時間(時區) 可以精確到毫秒。MySQL只能到秒。 預設都不會顯示時區,需要顯示的指定with time zone。 highgo=# select time '120900'; time ---------- 12:09:00 (1 row) highgo=# select time '120900 PST'; time ---------- 12:09:00 (1 row) highgo=# select time WITH time zone '120900 PST'; timetz ------------- 12:09:00-08 (1 row) 在輸入日期時,有很多種格式。有時候需要確定datestyle。 highgo=# create table t(date date); CREATE TABLE highgo=# insert into t values (date '12-18-2010'); INSERT 0 1 highgo=# select * from t; date ------------ 2010-12-18 (1 row) highgo=# show datestyle; DateStyle ----------- ISO, MDY (1 row) highgo=# set datestyle = 'YMD'; SET highgo=# insert into t values (date '2010-12-19'); INSERT 0 1 highgo=# select * from t; date ------------ 2010-12-18 2010-12-19 (2 rows) 注: 建議使用 2017-12-18 這種方式輸入日期。任何方式下都是2017年12月18日。 PostgreSQL 提供可許多返回當前日期和時間的函式。 部分函式按照當前事務的開始時刻返回結果: CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME(precision) LOCALTIME LOCALTIMESTAMP now() transaction_timestamp() 感覺這個描述更符合實際情況 另外部分函式返回實時時間值,在事務中也會隨時間變化。 statement_timestamp() clock_timestamp() timeofday() 返回的是text字串 在同一個事務中,和now()同類型的函式不會變化,和statement_timestamp()同類型的函式則相反。 highgo=# begin; BEGIN highgo=# select now(); now ------------------------------- 2017-12-18 12:18:32.263891+08 (1 row) highgo=# select now(); now ------------------------------- 2017-12-18 12:18:32.263891+08 (1 row) highgo=# select statement_timestamp(); statement_timestamp ------------------------------- 2017-12-18 12:19:15.463267+08 (1 row) highgo=# select statement_timestamp(); statement_timestamp ------------------------------- 2017-12-18 12:19:18.975693+08 (1 row) highgo=# commit; COMMIT By 天蠍座