Postgresql 日期和时间类型
timestamp with[out] time zone日期时间(时区)time with[out] time zone只用于一日内的时间(时区)可以精确到毫秒。MySQL只能到秒。默认都不会显示时区,需要显示的指定with time zone。highgo=# select time '120900';time----------
·
作者:瀚高PG实验室 (Highgo PG Lab)- 天蝎座
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
更多推荐
所有评论(0)