sql 日期和当前日期时间差_详解PostgreSQL 如何获取当前日期时间

概述

开发数据库应用或者调试代码时,经常需要获取系统的当前日期和时间,今天主要看一下 PostgreSQL 中提供的相关函数。


一、当前日期

CURRENT_DATE

CURRENT_DATE 函数用于获取数据库服务器的当前日期:

 postgres=# SELECT CURRENT_DATE;

调用该函数时不需要在函数名后加括号。该日期是服务器的日期,不是客户端的日期。

e19ac88e06565e1845ae91c020957c98.png

二、当前事务开始时间

以下函数可以用于获取数据库服务器的当前时间:

--前面 4 个函数用于获取时间,后面 4 个函数用于获取时间戳--CURRENT_TIME 和 CURRENT_TIMESTAMP 包含时区信息--LOCALTIME 和 LOCALTIMESTAMP 不包含时区信息--precision 用于指定小数秒的位数,取值为 0 - 6,默认为 6CURRENT_TIMECURRENT_TIME(precision)LOCALTIMELOCALTIME(precision) CURRENT_TIMESTAMPCURRENT_TIMESTAMP(precision)LOCALTIMESTAMPLOCALTIMESTAMP(precision)

例子:

postgres=# SELECT CURRENT_TIME, LOCALTIME, CURRENT_TIMESTAMP, LOCALTIMESTAMP;postgres=# SELECT CURRENT_TIME(3), LOCALTIME(3), CURRENT_TIMESTAMP(3), LOCALTIMESTAMP(3);
8f1833c4675b0f0a2816b91b22c1c55e.png

注意:上面所有的函数,包括 CURRENT_DATE,返回的都是当前事务开始的时间。在同一个事务期间,多次调用相同的函数将会返回相同的值,结果不会随着时间增加。这一点与其他数据库的实现可能不同。

以下示例使用 pg_sleep 函数暂停 3 秒再次获取当前时间:

postgres=# BEGIN;postgres=# SELECT CURRENT_TIMESTAMP;postgres=# SELECT pg_sleep(3);postgres=# SELECT CURRENT_TIMESTAMP;postgres=# COMMIT;

可以发现在事务中两次获取的时间相同。

0dacbdc454701e6fb3cf05bff27eac8f.png

三、当前语句开始时间

PostgreSQL 还提供了其他获取时间的函数

transaction_timestamp()statement_timestamp()clock_timestamp()timeofday()now()

1、transaction_timestamp()

transaction_timestamp() 等价于 CURRENT_TIMESTAMP,但是作用更加明确。

2、statement_timestamp()

返回当前语句的开始时间,更准确地说,应该是接收到客户端最新命令的时间。statement_timestamp() 和 transaction_timestamp() 对于事务中的第一个命令返回的结果相同,但随后再执行 statement_timestamp() 将会返回不同的值。

postgres=# BEGIN;postgres=# SELECT statement_timestamp();postgres=# SELECT pg_sleep(3);postgres=# SELECT statement_timestamp();postgres=# COMMIT;

当我们在存储过程(Stored Procedure)中进行调试时,通常需要打印不同语句消耗的时间;此时就需要使用 statement_timestamp(),而不能使用 CURRENT_TIMESTAMP 或者 transaction_timestamp()

36181fb314349d8306a051315f852c6d.png

3、clock_timestamp()

clock_timestamp() 返回当前实际的时间,即使在同一个 SQL 语句中也可能返回不同的值

 postgres=# SELECT clock_timestamp() FROM generate_series(1,10);
de27c9ccc897a97bb5a57b79357de046.png

查询语句在 1 秒钟内返回了 10 条记录,但是每条记录产生的时间都不相同。


4、timeofday()

timeofday() 是 PostgreSQL 中一个历史遗留函数。它与 clock_timestamp() 一样返回当前实际时间,但是返回类型是一个格式化的字符串,而不是 timestamp with time zone

 postgres=# SELECT timeofday() FROM generate_series(1,10);
526e221affdf89defb89a6195456ebc2.png

5、now()

now() 是 PostgreSQL 中与 transaction_timestamp() 等价的一个传统函数,同一个事务中的结果不会改变

postgres=# BEGIN;postgres=# SELECT now();postgres=# SELECT pg_sleep(3);postgres=# SELECT now();postgres=# COMMIT;
5f2a3d70443a7d693b72822dafebf29f.png

另外,所有的日期/时间数据类型都支持使用字面值'now'指定当前日期和时间(当前事务开始时间)。


四、延迟执行

以下函数可以用于延迟服务器进行的操作:

pg_sleep(seconds)pg_sleep_for(interval)pg_sleep_until(timestamp with time zone)

pg_sleep 将当前会话的进行暂停指定的秒数。seconds 的类型为 double precision,所以支持小数秒。我们在面前使用了该函数。

pg_sleep_for 执行一个延迟的时间间隔,通常用于指定一个较大的延迟。

pg_sleep_until 可以用于指定一个进程的唤醒时间。

以下示例分别暂停 1.5 秒、5 分钟以及直到明天 3 点:

SELECT pg_sleep(1.5);SELECT pg_sleep_for('5 minutes');SELECT pg_sleep_until('tomorrow 03:00');

暂停时间的精度取决于不同平台的实现,通常可以达到 0.01 秒。延迟效果最少会满足指定的值,但有可能由于其他因素导致更长,例如服务器负载过高。尤其对于 pg_sleep_until,不能保证在完全准确的指定时间唤醒进程,但是也不会提前唤醒。

注意:使用这些延迟函数时,确保当前会话没有锁定过多的资源;否则,其他会话将会一直等待,导致系统性能的下降。


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

ada0cc872aff0f5daaee0935f4172b4d.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们只知大势将至,却不知未来已来

❈ 凯文•凯利 《必然》: 未来的一切事物的生命都将是无穷尽的升级,而且迭代的速度不断的在加速。包括看得见的事物,也包括看不见的审美观和价值观。无论你使用一项工具的时间有多长,不断的升级都会把你变成一个菜鸟,从…

c#爬虫-1688官网自动登录

背景在1688官网里面有很多信息是需要登录才能看得到的,比如商家的联系电话等等。那么我们在抓取它的网页的时候,肯定是需要维持登录状态才能得到对应的内容。这里面就会涉及到自动登录的问题。登录地址https://login.1688.com/member/signin.htm自动登录…

tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件

TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet、Pytor…

做一个网站多少钱?

「一辆车子多少钱?一个房子多少钱?」 这问题在工程师或设计师的眼里就如「一辆车子多少钱?一个房子多少钱?」,这个问题实在空泛到一个让人无法言语的境界,这也是我最常被问到的问题「做一个网站多少钱?」。…

[Abp 源码分析]多租户体系与权限验证

点击上方蓝字关注我们0.简介承接上篇文章我们会在这篇文章详细解说一下 Abp 是如何结合 IPermissionChecker 与 IFeatureChecker 来实现一个完整的多租户系统的权限校验的。1.多租户的概念多租户系统又被称之为 Saas ,比如阿里云就是一个典型的多租户系统&#xff0…

生存是一种毅力

三月初回到成都,出站时还是凌晨5点多,第一次这么早站在成都的火车站,拥挤的人群和车辆,我的神志却异常的清醒,坚持不要母亲来接我. 到家洗漱后到头就睡,一觉醒来10点多,中午的成都虽不像北京那么阳光普照但也感觉暖暖的.想起在北京训练营的日子,"枯藤老树昏鸦"每天伴…

linux truncate文件,linux系统编程:用truncate调整文件大小

truncate的使用非常简单:int truncate(const char *path, off_t length);参数1:文件名参数2: 文件需要被调整的大小length 大于 文件大小, 文件后面会填充空白字节或者空洞length 小于 文件大小, 文件多出的部分,会被…

如何在 ASP.Net Core 中使用 SignalR

SignalR for ASP.Net Core 是 SignalR 的浴火重生版,允许你在 ASP.Net Core 中实现实时通讯,这里的 实时 意味着双方都能快速的感知对方发来的消息,比如:一旦 server 端有需要推送的内容将会直接 push 到 client,这和原…

搞笑动图:这些痛,只有程序员懂…

“代码上线后又追加了新特性” “在生产环境做 hotfix” “刚调稳定的系统,公司叕空降了一位架构师,叕要重构现有系统…… ” “当程序员听客户说还在用 IE 时” “当黑客拿到 root 权限之后” “代码进入循环分支后” “项目交接,客户要求开…

linux内核分为子系统,Linux内核内存管理子系统分析【转】

还是那张熟悉的老图:Linux内核子系统简介(由七个部分组成)Linux内存管理模型:1. 内存管子系统职能:1> 管理虚拟地址与物理地址的映射2> 管理物理内存的分配2. 地址映射管理1> 虚拟地址空间分布:linux采用的是一种虚拟地…

spss22.0统计分析从入门到精通_数据分析最全资料:SPSS/MATLAB/SQL/SAS/EXCEL经典教材+视频教程,快速入门!...

可以说当今社会数据就是力量。数据分析能力已经成为各个行业必备的技能,如果能熟练掌握数据分析技能,不管是留学申请还是以后的就业,都会是一个很大的加分项。但是目前国内很少有高校专门开设数据分析课程,想要掌握技能大部分要靠…

可反复擦写5万次的手写板,竟然还能用橡皮擦能清除屏幕!

作为一名文艺青年,平时写字画画是我的一大爱好。 心情不错,来个创作! 还记得我们之前介绍过的Boogie Board电子手写板吗? 小木用的就是它。 虽然好用,只不过有时候不小心画错了,只能重新来。 伤心啊…… 不…

[Abp 源码分析]权限验证

点击上方蓝字关注我们0.简介Abp 本身集成了一套权限验证体系,通过 ASP.NET Core 的过滤器与 Castle 的拦截器进行拦截请求,并进行权限验证。在 Abp 框架内部,权限分为两块,一个是功能(Feature),一个是权限项(Permissio…

cocoscreator editbox 只允许数字_《Cocos Creator游戏实战》做一个数字调节框

当玩家购买道具的时候,一个个买可能会比较麻烦,用数字调节框的话玩家一次性就可以买好几十个了(钱够的话)。运行效果如下:Cocos Creator版本:2.2.0公号"All Codes"后台回复"数字调节框",获取该项目…

为什么一流成功人士的闹钟都定在早晨5:57?

对很多人来说,早晨时分是一天中最匆忙的时段。近年来,我在研究人们如何利用时间的过程中发现,市场上铺天盖地的媒体教你如何利用早晨的时间。 美国国家睡眠基金会发布的一项睡眠调查结果显示,在工作日的早晨,30-50岁的…

命令行小技巧

我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令 $ cp /etc/apt/sources.list /etc/apt/sources.list.bak 这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的…

统计学习导论_统计机器学习之扫盲导论篇

机器学习之扫盲导论篇来都来了,不关注一下吗??人工智能是当下最火的词,而机器学习就是它的灵魂。现在超级多搞金融的人已经用到很深的机器学习模型了,更别提互联网企业的大佬们了,比如:(这是一篇…

[Abp 源码分析]异常处理

点击上方蓝字关注我们Abp 框架本身针对内部抛出异常进行了统一拦截,并且针对不同的异常也会采取不同的处理策略。在 Abp 当中主要提供了以下几种异常类型:异常类型描述AbpExceptionAbp 框架定义的基本异常类型,Abp 所有内部定义的异常类型都继…

phpstorm设置 打开文件所在目录_PDF文件在线分享并设置打开次数

公司有一些重要的PDF文档,怎么才能防止外泄?如何加密PDF文件防止被人复制了?怎样让PDF不能被别人拷贝啊? 这些问题困扰了一部分想让别人看pdf内容又担心别人泄露的人。本文用maipdf网站的例子来进行设置。首先我们打开maipdf的网站…

荐号 | 11个人工智能与大数据相关的个人、企业优质号

AlphaGo Zero都会自学了,作为刚刚步入AI大门的我们,应该如何选择合适自己的知识平台呢?今天小编为你甄选了几个高质量的技术公众号。 这些号更多的不是讲授枯燥的理论,而是从行业资讯、一线技术、应用案例、职场发展等多个角度分享…