热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

postgreSql——时区问题,PostgreSQL的时间/日期函数使用

timestamptz、timestampSELECTtsATTIMEZONEUTCFROM(VALUES(timestamptz2012-03-0517:00:00+0),(ti

timestamptztimestamp

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'

  

 

PostgreSQL的时间/日期函数使用

postgreSQL格式化时间的函数详解

 

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;

  

 

《postgreSql——时区问题,PostgreSQL的时间/日期函数使用》

《postgreSql——时区问题,PostgreSQL的时间/日期函数使用》

 

函数返回类型描述

示例

结果
age(timestamp, timestamp)interval计算两个时间戳的时间间隔

select age(timestamp &#8216;2001-04-10&#8217;,

timestamp &#8216;1957-06-13&#8217;);

43 years 9 mons 27 days
age(timestamp)interval计算current_date与入参时间戳的时间间隔

select age(timestamp

&#8216;2016-07-07 12:00:00&#8217;);

12:00:00
clock_timestamp()timestamp with time zone当前时间戳(语句执行时变化)select clock_timestamp();2016-07-08 15:14:04.197732-07
current_datedate当前日期select current_date;2016-07-08
current_timetime with time zone当前时间select current_time;15:15:56.394651-07
current_timestamptimestamp 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(&#8216;year&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;),

date_part(&#8216;month&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;),

date_part(&#8216;day&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;),
date_part(&#8216;hour&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;),

date_part(&#8216;minute&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;),

date_part(&#8216;second&#8217;,timestamp&#8217;2016-07-08 12:05:06&#8242;);

2016 | 7 | 8 | 12 | 5 | 6

date_part(text, interval)double precision功能同上,只是第二个入参为时间间隔select date_part(&#8216;hour&#8217;,interval&#8217;1 day 13:00:12&#8242;);13
date_trunc(text, timestamp)timestamp

将时间戳截断成指定的精度,

指定精度后面的子域用0补充

 select date_trunc(&#8216;hour&#8217;,

timestamp&#8217;2016-07-08 22:30:33&#8242;);

2016-07-08 22:00:00
date_trunc(text, interval)interval功能同上,只是第二个入参为时间间隔select date_trunc(&#8216;hour&#8217;,interval&#8217;1 year 2 mon 3 day 22:30:33&#8242;);1 year 2 mons 3 days 22:00:00
extract(field from timestamp)double precision功能同date_part(text, timestamp)select extract(hour from timestamp&#8217;2016-07-08 22:30:29&#8242;);22
extract(field from interval)double precision功能同date_part(text, interval)select extract(hour from interval&#8217;1 day 13:00:12&#8242;);13
isfinite(date)boolean测试是否为有穷日期select isfinite(date&#8217;2016-07-08&#8242;),isfinite(date&#8217;infinity&#8217;);t,f
isfinite(timestamp)boolean测试是否为有穷时间戳select isfinite(timestamp&#8217;2016-07-08&#8242;);t
isfinite(interval)boolean测试是否为有穷时间间隔select isfinite(interval&#8217;1day 23:02:12&#8242;);t
justify_days(interval)interval按照每月30天调整时间间隔select justify_days(interval&#8217;1year 45days 23:00:00&#8242;);1 year 1 mon 15 days 23:00:00
justify_hours(interval)interval按照每天24小时调整时间间隔select justify_hours(interval&#8217;1year 45days 343hour&#8217;);1 year 59 days 07:00:00
justify_interval(interval)interval同时使用justify_days(interval)和justify_hours(interval)select justify_interval(interval&#8217;1year 45days 343hour&#8217;);1 year 1 mon 29 days 07:00:00
localtimetime当日时间select localtime;15:45:18.892224
localtimestamptimestamp当日日期和时间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(&#8216;5 seconds&#8217;); 
pg_sleep_until(timestamp with time zone) 当前会话休眠至什么时间点select pg_sleep_until(&#8216;2016-07-08 23:59:59&#8217;); 

 


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
author-avatar
新疆盛苑烟酒特产_485
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有