Date & Time & timestamptz



--取日期
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
----------
 PRC

postgres=# 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.conf
timezone='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分钟,单位interval
SELECT 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
时间: 2024-08-04 00:44:42

Date & Time & timestamptz的相关文章

安卓 json date类型数据

问题描述 安卓 json date类型数据 将date类型数据放入json中时出现未知缓冲区错误是为什么?JSONObject jo = new JSONObject();jo.put(""Birthday""new Date()); 解决方案 这样会把date生成成一个json,里面会有date的属性与队形的值.最简单的方法就是(传递毫秒值):jo.put(""Birthday"" new Date().getTime())

PHP中date与gmdate有什么区别?

  一.PHP中date与gmdate有什么区别? PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为: date - 格式化一个本地时间/日期 gmdate - 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT). 举个例子,我们现在所在的时区是+8,那么服务器运行以下脚本返回的时间应该是这样的: 当前时间假定是2007-03-14 12:15:27 echo date('Y-m-d H:i:s', time()); 输出为:2007-

ie8 不支持new Date(2012-11-10)问题的解决方法

我们在使用JS的时候也碰到了如此问题,后来经过修改,在IE8环境里,下面的代码是可用的. js 结束时间-开始时间,得到天数 复制代码 代码如下: function getDays(strDateStart,strDateEnd){ var strSeparator = "-"; //日期分隔符 var oDate1; var oDate2; var iDays; oDate1= strDateStart.split(strSeparator); oDate2= strDateEnd.

php中的time(),date(),mktime(),strtotime()

time():返回当前的Unix时间戳: date():格式化一个本地的时间戳: mktime(时,分,秒,月,日,年):取得一个日期的时间戳: strtotime():将任何英文文本的日期时间描述解析为Unix时间戳 <?php echo time(); echo date('Y-m-d H:i:s',time()); echo mktime(13,54,55,9,18,2015); echo strtotime("now"); echo strtotime("10

JavaScript Date对象介绍

Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new Date() :返回当前的本地日期和时间 参数:无 返回值: {Date} 返回一个表示本地日期和时间的Date对象. 示例:     var dt = new Date(); console.log(dt); // => 返回一个表示本地日期和时间的Date对象   2.2 new Date(milliseconds) :把毫秒数转换为Dat

js date:JS Date 转换

js Date(日期)型字符串,要想正确的转换为Date(日期)对象,必须用new Date(str)方式.很多情况下,我们获取到了一大串诸如:Sun Jan 2 00:00:00 UTC+0800 2000 的JS日期,当我们想将其转换成字符串或者其他类型时,一开始我真的不知所措.后来才发现,原来就那么简单,先将日期,new Date(日期)一下,再做转换或者计算. 本文链接http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20130620/3873

转:java.util中的Date类

java.util中的Date类 www.linuxaid.com.cn 01-09-20 23:03 496p 处处--------------------------------------------------------------------------------     在JSP中,我们经常要处理有关日期和时间的信息,这时候你可以使用java.util中的Date类,在编写Java源程序时,情况很明显,你必须通过"import java.util.*"引入java.ut

Date 对象

对象   启用基本存储器并取得日期和时间. dateObj = new Date()dateObj = new Date(dateVal)dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) 参数 dateObj 必选项.要赋值为 Date 对象的变量名. dateVal 必选项.如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间 的毫秒数.如果是字符串,则 d

域到在Expiration Date日期过后,多久可以重新注册?

和域名相关的几个日期,他们是:域名创建日期(Creation Date):域名续费日期(Updated Date):域名失效日期(Expiration Date) . 如下示例: Updated Date: 17-may-2005 Creation Date: 17-may-2005 Expiration Date: 17-may-2006 这个域名的相应日期信息,表示这个域名是在2005-05-17日注册,在同日续费1年,该域名的失效日期是2006-05-17. 其中最为重要的就是失效日期(E