postgreSql——时区问题
timestamptz、timestamp
SELECT ts AT TIME ZONE 'UTC'
FROM (
VALUES
(timestamptz '2012-03-05 17:00:00+0')
, (timestamptz '2012-03-05 18:00:00+1')
, (timestamp '2012-03-05 18:00:00+1') -- ① loaded footgun!
, (timestamp '2012-03-05 11:00:00' AT TIME ZONE '+6')
, (timestamp '2012-03-05 17:00:00' AT TIME ZONE 'UTC')
, (timestamp '2012-03-05 07:00:00' AT TIME ZONE 'US/Hawaii') -- ②
, (timestamp '2012-03-05 07:00:00' AT TIME ZONE 'HST') -- ②
) t(ts);
SELECT timestamptz '2012-03-05 20:00+03',
timestamp '2012-03-05 17:00:00' AT TIME ZONE 'UTC',
timestamp '2012-03-05 17:00:00' AT TIME ZONE 'UTC' AT TIME ZONE 'UTC'
查看现在距1970-01-01 00:00:00 UTC 的秒数
select extract(epoch from now());
select timestamp without time zone 'epoch',timestamp without time zone 'epoch' + 3600*interval '1 sec'
select timestamp without time zone 'epoch',timestamp with time zone 'epoch'
把epoch 值转换回时间戳
select timestamp without time zone 'epoch',timestamp with time zone 'epoch' ,timestamp 'epoch',timestamptz 'epoch'
mysql转为postgesql
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(UTC_TIMESTAMP()) + tz.gmt_offset, '%a, %d %b %Y, %H:%i:%s') AS local_time
FROM "Dict"."TimeZoneDetail" tz JOIN "Dict"."TimeZoneToCountry" z
ON tz.zone_id=z.zone_id
WHERE tz.time_start <= UNIX_TIMESTAMP(UTC_TIMESTAMP()) AND z.zone_name='America/Los_Angeles'
ORDER BY tz.time_start DESC LIMIT 1; SELECT (now() AT TIME ZONE 'UTC' )+interval '1'* tz."GMTOffset" AS local_time,now() as now,now() AT TIME ZONE 'UTC' as utcnow,tz."GMTOffset" as offsett
FROM "Dict"."TimeZoneDetail" tz inner JOIN "Dict"."TimeZoneToCountry" z
ON tz."ZoneId"=z."ZoneId"
WHERE to_timestamp(tz."TimeStart") <= timestamp 'epoch' AND z."ZoneName"='America/Los_Angeles'
ORDER BY tz."TimeStart" DESC LIMIT 1;


| 函数 | 返回类型 | 描述 |
示例 |
结果 |
| age(timestamp, timestamp) | interval | 计算两个时间戳的时间间隔 |
select age(timestamp '2001-04-10', timestamp '1957-06-13'); |
43 years 9 mons 27 days |
| age(timestamp) | interval | 计算current_date与入参时间戳的时间间隔 |
select age(timestamp '2016-07-07 12:00:00'); |
12:00:00 |
| clock_timestamp() | timestamp with time zone | 当前时间戳(语句执行时变化) | select clock_timestamp(); | 2016-07-08 15:14:04.197732-07 |
| current_date | date | 当前日期 | select current_date; | 2016-07-08 |
| current_time | time with time zone | 当前时间 | select current_time; | 15:15:56.394651-07 |
| current_timestamp | timestamp with time zone | 当前时间戳 | select current_timestamp; | 2016-07-08 15:16:50.485864-07 |
| date_part(text, timestamp) | double precision | 获取时间戳中的某个子域,其中text可以为year,month,day,hour,minute,second等 |
select date_part('year',timestamp'2016-07-08 12:05:06'), date_part('month',timestamp'2016-07-08 12:05:06'), date_part('day',timestamp'2016-07-08 12:05:06'), date_part('minute',timestamp'2016-07-08 12:05:06'), date_part('second',timestamp'2016-07-08 12:05:06'); |
2016 | 7 | 8 | 12 | 5 | 6 |
| date_part(text, interval) | double precision | 功能同上,只是第二个入参为时间间隔 | select date_part('hour',interval'1 day 13:00:12'); | 13 |
| date_trunc(text, timestamp) | timestamp |
将时间戳截断成指定的精度, 指定精度后面的子域用0补充 |
select date_trunc('hour', timestamp'2016-07-08 22:30:33'); |
2016-07-08 22:00:00 |
| date_trunc(text, interval) | interval | 功能同上,只是第二个入参为时间间隔 | select date_trunc('hour',interval'1 year 2 mon 3 day 22:30:33'); | 1 year 2 mons 3 days 22:00:00 |
extract(field from timestamp) |
double precision | 功能同date_part(text, timestamp) | select extract(hour from timestamp'2016-07-08 22:30:29'); | 22 |
extract(field from interval) |
double precision | 功能同date_part(text, interval) | select extract(hour from interval'1 day 13:00:12'); | 13 |
| isfinite(date) | boolean | 测试是否为有穷日期 | select isfinite(date'2016-07-08'),isfinite(date'infinity'); | t,f |
| isfinite(timestamp) | boolean | 测试是否为有穷时间戳 | select isfinite(timestamp'2016-07-08'); | t |
| isfinite(interval) | boolean | 测试是否为有穷时间间隔 | select isfinite(interval'1day 23:02:12'); | t |
| justify_days(interval) | interval | 按照每月30天调整时间间隔 | select justify_days(interval'1year 45days 23:00:00'); | 1 year 1 mon 15 days 23:00:00 |
| justify_hours(interval) | interval | 按照每天24小时调整时间间隔 | select justify_hours(interval'1year 45days 343hour'); | 1 year 59 days 07:00:00 |
| justify_interval(interval) | interval | 同时使用justify_days(interval)和justify_hours(interval) | select justify_interval(interval'1year 45days 343hour'); | 1 year 1 mon 29 days 07:00:00 |
| localtime | time | 当日时间 | select localtime; | 15:45:18.892224 |
| localtimestamp | timestamp | 当日日期和时间 | select localtimestamp; | 2016-07-08 15:46:55.181583 |
| make_date(year int, month int, day int) | date | 创建一个日期 | select make_date(2016,7,8); | 2016-07-08 |
|
make_interval( years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0) |
interval | 创建一个时间间隔 | select make_interval(1,hours=>3); | 1 year 03:00:00 |
|
make_time( hour int, min int, sec double precision) |
time | 创建一个时间 | select make_time(9,21,23); | 09:21:23 |
|
make_timestamp( year int, month int, day int, hour int, min int, sec double precision) |
timestamp | 创建一个时间戳 | select make_timestamp(2016,7,8,22,55,23.5); | 2016-07-08 22:55:23.5 |
|
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ]) |
timestamp with time zone | 创建一个带有时区的时间戳 | select make_timestamptz(2016,7,8,22,55,23.5); | 2016-07-08 22:55:23.5-07 |
| now() | timestamp with time zone | 当前日期和时间 | select now(); | 2016-07-08 15:55:30.873537-07 |
| statement_timestamp() | timestamp with time zone | 同now() | select statement_timestamp(); | 2016-07-08 15:56:07.259956-07 |
| timeofday() | text |
当前日期和时间,包含周几, 功能与clock_timestamp()类似 |
select timeofday(); | Fri Jul 08 15:57:51.277239 2016 PDT |
| transaction_timestamp() | timestamp with time zone | 事务开始时的时间戳 | select transaction_timestamp(); | 2016-07-08 16:01:25.007153-07 |
| to_timestamp(double precision) | timestamp with time zone |
Convert Unix epoch (seconds since 1970-01-01 00:00:00+00) to timestamp |
select to_timestamp(1284352323); |
2010-09-12 21:32:03-07 |
| pg_sleep(seconds double precision); |
当前会话休眠seconds秒 |
select pg_sleep(5); | ||
| pg_sleep_for(interval) | 当前会话休眠多长时间的间隔 | select pg_sleep_for('5 seconds'); | ||
| pg_sleep_until(timestamp with time zone) | 当前会话休眠至什么时间点 | select pg_sleep_until('2016-07-08 23:59:59'); |
postgreSql——时区问题的更多相关文章
- java&postgresql时区总结
介绍这篇文章之前,首先回答一个问题,以前都没有时区的概念,程序也写的好好的,为什么要计算时区哪?举个例子,比如有一个订单的时间是:2015-07-04 11:28:19,那么咋一看没什么问题,可是如果 ...
- JDBC 连接 postgresql 时区变 UTC
加上 时区 语句 ..-Duser.timezone=PRC
- postgresql 和 mysql 数据库备份恢复以及时区问题
概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...
- 【PostgreSQL】PostGreSQL数据库,时间数据类型
---"17:10:13.236"time without time zone:时:分:秒.毫秒 ---"17:10:13.236+08"time with t ...
- PostgreSQL 同步复制(1master+2standby)
OS: Red Hat Enterprise Linux Server release 6.5 (Santiago) PostgreSQL: postgresql-9.4.5.tar.bz2 mast ...
- postgresql编译安装与调试(二)
接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...
- 在CentOS上编译安装PostgreSQL
http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...
- PostgreSQL学习手册(常用数据类型)
一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...
随机推荐
- vue-cli 脚手架搭建
1,下载node.js node.js 集成npm 管理器 2,打开命令行工具(win+R) node -v npm -v 出现对应版本号,则安装完成 3,配置代理信息 详见代理设定:https:// ...
- system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
elasticsearch启动时遇到的错误 这个是elasticsearch配置文件的问题. 解决办法: 在elasticsearch.yml配置文件中 添加 bootstrap.system ...
- linux test
some test .在登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么(b) A.NID B.PID C.UID C.CID .下面那个用户存放用户密码信息(b) A./ ...
- mxnet 查看 Sym shape
import mxnet as mximport numpy as npimport randomimport mxnet as mximport sysdata_shape = {'data':(6 ...
- JavaScript笔记 #06# Promise简单例子
索引 回调版本 Promise版本1 Promise版本2 Notes 参考资料: Promise JavaScript Promise:简介 你去书店借书,按照异步的套路,剧情如下↓ 你:“老板,有 ...
- 搭建ssm框架
我现在在着手搭建一个项目ssm+angularsJs的框架 以下是目录结构 将所有的依赖全部引入到父工程中,然后在子工程中需要的时候,再引入,父工程只是用来引入依赖 <!-- 集中定义依赖版本号 ...
- nginx location分析
- Elasticstarch 相关
索引: 在Elasticsearch中存储数据的行为就叫做索引(indexing),不过在索引之前,我们需要明确数据应该存储在哪里. 在Elasticsearch中,文档归属于一种类型(type),而 ...
- Ajax解决csrf_token的不同方式
ajax发送csrf_token的不同方式: 方式一: 在ajax发送之前,做好处理,用到了beforeSend方法,把csrf_token写入到Header头内,csrf_token去jquery. ...
- P4577 [FJOI2018]领导集团问题
P4577 [FJOI2018]领导集团问题 我们对整棵树进行dfs遍历,并用一个multiset维护对于每个点,它的子树可取的最大点集. 我们遍历到点$u$时: 不选点$u$,显然答案就为它的所有子 ...