博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Date & Time & timestamptz
阅读量:5874 次
发布时间:2019-06-19

本文共 4207 字,大约阅读时间需要 14 分钟。

--取日期postgres=# select '2016-10-10 12:12:12' ::date;    date    ------------ 2016-10-10(1 row)--取时间postgres=# select '2016-10-10 12:12:12' :: time;   time   ---------- 12:12:12(1 row)Time: 6.083 ms--间隔1年postgres=# select '2016-10-10 12:12:12'::timestamp + interval '1 year';      ?column?       --------------------- 2017-10-10 12:12:12(1 row)--间隔1月postgres=# select '2016-10-10 12:12:12'::timestamp + interval '1 month';      ?column?       --------------------- 2016-11-10 12:12:12(1 row)--间隔1天postgres=# select '2016-10-10 12:12:12'::timestamp + interval '1 day';        ?column?       --------------------- 2016-10-11 12:12:12(1 row)--间隔-1时postgres=# select '2016-10-10 12:12:12'::timestamp + interval '-1 hour';      ?column?       --------------------- 2016-10-10 11:12:12--随机时间范围postgres=# select '2015-5-1'::date + trunc(random()*100)::integer +' 00:22:22'::time + (trunc(random()*3600*24)||' second')::interval;       ?column?       --------------------- 2015-06-16 00:32:04(1 row)postgres=# select '2015-5-1'::date + trunc(random()*100)::integer +' 00:22:22'::time + (trunc(random()*3600*24)||' second')::interval;       ?column?       --------------------- 2015-06-08 17:10:4--对于timestamp类型其范围是 4713 BC (公元前4713年) 到 294276 AD (公元后294276)postgres=# select '112045-10-1 12:12:12.1212+08'::timestamptz;          timestamptz          ------------------------------- 112045-10-01 12:12:12.1212+08 --不同时区之间的转换 postgres=# show timezone; TimeZone ---------- PRCpostgres=# select '2016-02-03 09:07:30.816885+08' at time zone 'pst';          timezone          ---------------------------- 2016-02-02 17:07:30.816885(1 row)postgres=# select '2016-02-03 09:07:30.816885+08' at time zone 'cct';          timezone          ---------------------------- 2016-02-03 09:07:30.816885(1 row)  postgres=#  SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'cct';      timezone       --------------------- 2001-02-17 09:38:40--查看系统支持的时区 select * from pg_timezone_names ;    --时区设置参数timezone = 'PRC'--修改时区的方法1. 全局参数postgresql.conftimezone='UTC'2. 数据库级配置alter database dbname set timezone='UTC';pipeline=# select * from pg_db_role_setting ; setdatabase | setrole |              setconfig               -------------+---------+--------------------------------------       14930 |       0 | {TimeZone=UTC}3. 用户级配置alter role rolname set timezone='UTC';或者alter role all set timezone='UTC';--休眠1.5秒后执行,单位秒SELECT clock_timestamp(),pg_sleep(1.5);--休眠5分钟,单位intervalSELECT clock_timestamp(),pg_sleep_for('5 minutes');--到指定时间执行,注意这些休眠时间不是完全精确的SELECT clock_timestamp(),pg_sleep_until('today 10:00');--事务开始时间与语句开始时间begin;--事务开始之后,now()值不变,clock_timestamp()随系统而变postgres=# SELECT now(),transaction_timestamp(),clock_timestamp();                                now              |     transaction_timestamp     |        clock_timestamp        -------------------------------+-------------------------------+------------------------------- 2016-06-21 17:59:41.722658+08 | 2016-06-21 17:59:41.722658+08 | 2016-06-21 18:01:46.234223+08(1 row)postgres=# SELECT now(),transaction_timestamp(),clock_timestamp();              now              |     transaction_timestamp     |        clock_timestamp        -------------------------------+-------------------------------+------------------------------- 2016-06-21 17:59:41.722658+08 | 2016-06-21 17:59:41.722658+08 | 2016-06-21 18:02:50.249675+08 --extract提取指定的日期值--dow,每周的星期号,星期天(0)到星期六(6)SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');--doy,一年的第几天(1-365/366)SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');postgres=# SELECT EXTRACT('year' FROM TIMESTAMP '2001-02-16 20:38:40');    date_part -----------      2001(1 row)postgres=# SELECT EXTRACT('hour' FROM TIMESTAMP '2001-02-16 20:38:40');     date_part -----------        20--截取时间postgres=# SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');     date_trunc      --------------------- 2001-02-16 20:00:00(1 row)postgres=# SELECT date_trunc('month', TIMESTAMP '2001-02-16 20:38:40');         date_trunc      --------------------- 2001-02-01 00:00:00(1 row)postgres=# SELECT date_trunc('day', TIMESTAMP '2001-02-16 20:38:40');          date_trunc      --------------------- 2001-02-16 00:00:00

转载地址:http://svenx.baihongyu.com/

你可能感兴趣的文章
HTML <img> 标签
查看>>
UPS故障案例集(一)
查看>>
基础篇 (2)
查看>>
ECMAScript 6中的Set和Map数据结构
查看>>
使用大于16TB的ext4文件系统
查看>>
c/c++标准库中的文件操作总结
查看>>
day20 Python 高阶函数,函数,嵌套,闭包 装饰器
查看>>
记录时间的方法
查看>>
667. Beautiful Arrangement II
查看>>
Intellij idea 快捷键 生成序列化ID
查看>>
[原创]错误提示:disagrees about version of symbol module_layout,解决方法
查看>>
费马小定理&欧拉定理
查看>>
oracle数组的使用
查看>>
POJ3342 Party at Hali-Bula(树型DP求最大独立集+唯一解判断)
查看>>
matplotlib ----- 多子图, subplots
查看>>
无线路由器连接电信光纤宽带光猫设置方法(转)
查看>>
git的CentOS服务端安装和windows客户端的使用
查看>>
会议06
查看>>
快速提高看盘能力的十大方法
查看>>
线性代数与矩阵论 习题 1.2.1
查看>>