Postgre SQL
发布时间:2022-05-20 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了postgresql 时区与时间函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
607_0@--把时间戳转成epoch值
POSTGRes=#
SELEct extract(epoch from Now()
);
date_part
------------------
1447898857.74524
(1 row)
--把epoch 值转换回时间戳
POSTGRes=#
SELEC
t timestamp WITH TIME ZONE 'epoch' + 1447898857.74524 * INTERVAL '1 second';
?
column?
------------------------------
2015-11-19 10:07:37.74524+08
POSTGRes=#
SELEC
t timestamp WITH TIME ZONE 'epoch' + 1447898857.74524 * INTERVAL '1 second';
?
column?
------------------------------
2015-11-19 10:07:37.74524+08
--查看当前的时间戳
POSTGRes=#
SELEct
clock_timestamp(),
CURRENT_TIMESTAMP,local
timestamp;
clock_
timestamp | Now |
timestamp
-------------------------------+-------------------------------+----------------------------
2016-02-02 17:54
:15.547194+08 | 2016-02-02 17:54
:15.546956+08 | 2016-02-02 17:54
:15.546956
--时间加减
POSTGRes=#
SELEct date '2016-02-02 10:00:00'+ interval '10
minutes';
?
column?
---------------------
2016-02-02 00
:10:00
--直接用sql生成随机日期时间
SELEct '2015-5-1'::date + trunc(random()*100)::
Integer +' 00:22:22'::time + (trunc(random()*3600*
24)||' second')::interval;
--不同时区之间的转换
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=#
SELEC
t 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. 全局参数
POSTGResq
l.conf
timezone='UTC'
2. 数据库级配置
alter database dbname set timezone='UTC';
pipeline=#
SELEct * from
pg_db_role_set
Ting ;
setdatabase | setrole | setconfig
-------------+---------+--------------------------------------
14930 | 0 |
{TimeZone=UTC}
3. 用户级配置
alter role rolname set timezone='UTC';
或者
alter role all set timezone='UTC';
pipeline=#
SELEct * from
pg_db_role_set
Ting ;
setdatabase | setrole | setconfig
-------------+---------+--------------------------------------
14930 | 0 |
{TimeZone=UTC}
0 | 0 |
{TimeZone=UTC}
--创建随机日期时间函数
CREATE OR
replaCE FUNCTION rand_date_time(start_date date,
END_DATE dat
E) RETURNS
timestAMP AS
$BODY$
DECLARE
interval_days
Integer;
random_seconds
Integer;
random_dates
Integer;
random_date date;
random_time time;
BEGIN
interval_days :=
END_DATE - start_date;
random_dates:= trunc(random()*interval_days
);
random_date := start_date + random_dates;
random_seconds:= trunc(random()*3600*
24);
random_time:=' 00:00:00'::time+(random_seconds || ' second')::INTERVAL;
RETURN random_date +random_time;
END;
$BODY$
LANGUAGE plpgsql;
--生成指定时间内的随机时间
SELECT rand_date_time('2000-01-01','2013-12-31'
);
--休眠1.5秒后执行,单位秒
SELECT
clock_timestamp(),
pg_sleep(1.5),
clock_timestamp();
--休眠5分钟,单位interval
SELECT
clock_timestamp(),
pg_sleep_for('5
minutes'),
clock_timestamp();
--到指定时间执行,注意这些休眠时间不是完全精确的
SELECT
clock_timestamp(),
pg_sleep_until('today 10:00'),
clock_timestamp();
大佬总结
以上是大佬教程为你收集整理的postgresql 时区与时间函数全部内容,希望文章能够帮你解决postgresql 时区与时间函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。