PostgreSQL 如何获取当前日期时间及注意事项

来源:脚本之家  责任编辑:小易  

用时间值减去获取的周几数值与1的差组成的日期间隔。示例:select current_times

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

select now();或者select current_timestamp;都可以

当前日期

CURRENT_DATE

PostgreSQL中直接用两个date(或者timestamp)值相减,其返回的是一个interv

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

比较通用的方法WITH t AS ( SELECT convert(datet

postgres=# SELECT CURRENT_DATE; current_date -------------- 2019-09-28 (1 row)

方法一:通过查找表数据文件方式这种方法通过查找表的数据文件的方式从而确定表的创建时间,但是这种方

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

备注:96年版红色一元纸币目前市场价格单张价格:2.8元96年版色一元概况发行时间:1995年3月1日发行单位:中国人民银行票面尺寸:140*63mm发行量:限量面值:1元字冠、号码:二字冠、八号码印刷工艺:双胶印刷正面图案:侗族、瑶族人物头像96年版红色一元收藏价值96年一元纸币受到热捧是由很多因素决定的,其中印制的不同就是其主要的特色之一。据了解,在1996年1元在印制的时使用的实际上是满版实心五星国旗水印纸,而第四套人民币中其他纸币在印制时选择的是固定头像水印纸,对比以上,96年一元纸币显得尤为突出,从而价值大显。在流通时间上而言,96年一元所占的优势也是绝对的。1996年一元纸币属于我

当前事务开始时间

 爱美的妹子请进  韩妞一直是大家公认的好皮肤, 韩国的化妆品护肤品都以纯天然成分为主,刺激小吸收好,欧美的护肤品则加入了很多高科技,会让你刚用时效果很好,后来就没有什么效果了,也会让你的皮肤产生依赖性。 拱辰亨气津滋养阴阳平衡套装  产品特点:保湿滋润,可恢复水油平衡。WHOO拱辰亨系列产品含有拱辰丹成分,由内养外,深度调节肌肤气血平衡,使肌肤保湿光彩,皮肤亮丽细化,青春永驻。由鹿茸、当归、红参、天门冬、五味子、牡丹皮等名贵天草药成分配置而成,以促进皮肤气血循环,补充元气。  秘贴精华套盒  这款精华是我特别想要的,打算手里的雅诗兰黛用完了就败这套回来的,超级划算  秘贴自生精华素可以一次性

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

众所周知,拔罐是通过一种体外的物理方式工具如玻璃罐和竹罐,利用燃火、抽气等方法产生负压,使之吸附于体表,造成局部瘀血,以达到通经活络、行气活血、消肿止痛、祛风散寒等作用的疗法。拔罐可以祛风散寒,春风除湿,减轻疼痛,可以用于腰椎间盘突出或者风寒风湿等疾病,也可以用于日常保健,有强身健体的作用。相对来说,中医里面的湿气风寒就是我们通常所说的毒气,拔罐可以帮助人体排毒,但是拔火罐出现有水泡的现象,这个并不是毒素的表现。一般而言,如果拔火罐出现有水泡的现象,大多是由于拔灌就灌的时间太久了,与个人的体质有一定的关系。在拔罐过程中,有人留罐20-30分钟也不会有起泡的现象,也有人1-10分钟就会起泡,所以

CURRENT_TIME CURRENT_TIME(precision) LOCALTIME LOCALTIME(precision) CURRENT_TIMESTAMP CURRENT_TIMESTAMP(precision) LOCALTIMESTAMP LOCALTIMESTAMP(precision)

头发太油跟身体没什么关系,新陈代谢太快了教你几个处理方法一、要分析出油的原因头皮毛囊内的皮脂腺产生的油性、蜡状物质就是皮脂,当皮脂腺分泌了过多皮脂,这些物质就会蔓延到头发上,让头发看起来很油腻。二、头发经常剪头发越长,在重力作用下就会越下垂,发根受到的拉力就越大,因此就越容易出油、显得扁平。建议人们至少每个月修剪一次头发,不仅可以帮助控油,对发根也有一定的保护作用。三、更换洗发水头发爱出油的人最好使用含有吡啶硫酮锌或水杨酸成分的洗发水,它们多存在于去屑洗发水中,能够帮助控制头皮出油。四、洗头按摩30秒洗头时,不要立刻把洗发水洗掉,应该轻轻用指腹按摩头皮至少30秒,然后再冲洗,这样有利于将多余的

CURRENT_TIME、LOCALTIME、CURRENT_TIMESTAMP、LOCALTIMESTAMP

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

postgres=# SELECT CURRENT_TIME, LOCALTIME, CURRENT_TIMESTAMP, LOCALTIMESTAMP; current_time | localtime | current_timestamp | localtimestamp --------------------+-----------------+-------------------------------+---------------------------- 12:20:50.602412+08 | 12:20:50.602412 | 2019-09-28 12:20:50.602412+08 | 2019-09-28 12:20:50.602412 (1 row) postgres=# SELECT CURRENT_TIME(3), LOCALTIME(3), CURRENT_TIMESTAMP(3), LOCALTIMESTAMP(3); current_time | localtime | current_timestamp | localtimestamp -----------------+--------------+----------------------------+------------------------- 12:28:03.547+08 | 12:28:03.547 | 2019-09-28 12:28:03.547+08 | 2019-09-28 12:28:03.547 (1 row)

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

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

postgres=# BEGIN; BEGIN postgres=# SELECT CURRENT_TIMESTAMP; current_timestamp ------------------------------- 2019-09-28 12:43:57.075609+08 (1 row) postgres=# SELECT pg_sleep(3); pg_sleep ---------- (1 row) postgres=# SELECT CURRENT_TIMESTAMP; current_timestamp ------------------------------- 2019-09-28 12:43:57.075609+08 (1 row) postgres=# COMMIT; COMMIT

在事务中两次获取的时间相同。

当前语句开始时间

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

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

transaction_timestamp()

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

statement_timestamp()

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

postgres=# BEGIN; BEGIN postgres=# SELECT statement_timestamp(); statement_timestamp ------------------------------- 2019-09-28 13:11:14.497135+08 (1 row) postgres=# SELECT pg_sleep(3); pg_sleep ---------- (1 row) postgres=# SELECT statement_timestamp(); statement_timestamp ----------------------------- 2019-09-28 13:11:17.5141+08 (1 row) postgres=# COMMIT; COMMIT

两次执行结果之间相差了 3 秒左右。

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

CREATE OR REPLACE sp_test ... DECLARE lts_systimestamp timestamp; BEGIN; lts_systimestamp := statement_timestamp(); ... RAISE NOTICE 'Step 1 take time: %', statement_timestamp() - lts_systimestamp; ... END;

clock_timestamp()

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

postgres=# SELECT clock_timestamp() FROM generate_series(1,10); clock_timestamp ------------------------------- 2019-09-28 13:18:55.659778+08 2019-09-28 13:18:55.659786+08 2019-09-28 13:18:55.659788+08 2019-09-28 13:18:55.65979+08 2019-09-28 13:18:55.659791+08 2019-09-28 13:18:55.659793+08 2019-09-28 13:18:55.659795+08 2019-09-28 13:18:55.659797+08 2019-09-28 13:18:55.659799+08 2019-09-28 13:18:55.659801+08 (10 rows)

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

timeofday()

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

postgres=# SELECT timeofday() FROM generate_series(1,10); timeofday ------------------------------------- Sat Sep 28 13:23:05.068541 2019 CST Sat Sep 28 13:23:05.068570 2019 CST Sat Sep 28 13:23:05.068577 2019 CST Sat Sep 28 13:23:05.068584 2019 CST Sat Sep 28 13:23:05.068591 2019 CST Sat Sep 28 13:23:05.068598 2019 CST Sat Sep 28 13:23:05.068605 2019 CST Sat Sep 28 13:23:05.068612 2019 CST Sat Sep 28 13:23:05.068619 2019 CST Sat Sep 28 13:23:05.068626 2019 CST (10 rows)

now()

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

postgres=# BEGIN; BEGIN postgres=# SELECT now(); now ------------------------------- 2019-09-28 13:27:26.831492+08 (1 row) postgres=# SELECT pg_sleep(3); pg_sleep ---------- (1 row) postgres=# SELECT now(); now ------------------------------- 2019-09-28 13:27:26.831492+08 (1 row) postgres=# COMMIT; COMMIT

另外,所有的日期/时间数据类型都支持使用字面值'now'指定当前日期和时间(当前事务开始时间)。因此,以下语句效果相同:

SELECT CURRENT_TIMESTAMP; SELECT now(); SELECT TIMESTAMP 'now'; -- 不要用于字段的 DEFAULT 值

顺便说一下,PostgreSQL 还提供了其他几个特殊的日期和时间字面值:

-- SELECT timestamp 'epoch', timestamp 'today', timestamp 'tomorrow', timestamp 'yesterday', TIME 'allballs'; postgres=# SELECT DATE 'epoch', DATE 'today',DATE 'tomorrow', DATE 'yesterday', TIME 'allballs'; date | date | date | date | time ------------+------------+------------+------------+---------- 1970-01-01 | 2019-09-28 | 2019-09-29 | 2019-09-27 | 00:00:00 (1 row)

以上函数分别返回 UTC 1970 年 1 月 1 日零点、今天午夜、明天午夜、昨天午夜以及 UTC 零点。

延迟执行

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

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,不能保证在完全准确的指定时间唤醒进程,但是也不会提前唤醒。

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

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何获取postgreSQL中当前日期是星期几

1、使用Calendar类

/**

* 获取当前日期是星期几<br>

*

* @param dt

* @return 当前日期是星期几

*/

public static String getWeekOfDate(Date dt) {

String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

Calendar cal = Calendar.getInstance();

cal.setTime(dt);

int w = cal.get(Calendar.DAY_OF_WEEK) - 1;

if (w < 0)

w = 0;

return weekDays[w];

}

2、使用SimpleDateFormat格式化日期

Date date=new Date();

SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");

dateFm.format(date);

注:格式化字符串存在区分大小写

对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“十一月”;MM代表月份,如“11”;

yyyy代表年份,如“2010”;dd代表天,如“25”本回答被网友采纳

postgresql如何获得当前时间的14位格式

不知道你这个   14位是什么意思。

下面的 sql 语句, 不是 今天执行的。

都是获取   “今天 /  当前时间” 的函数的一些 调用的例子。

你参考参考。

-- 返回数据类型为 date

Test=# SELECT current_date AS "今天的日期";

 今天的日期

------------

 2013-04-09

(1 行记录)

-- 返回数据类型为 time with time zone

Test=# SELECT current_time AS "现在的时间";

   现在的时间

-----------------

 11:24:32.115+08

(1 行记录)

-- 返回数据类型为 time

Test=# SELECT localtime AS "现在的时间";

  现在的时间

--------------

 11:24:32.145

(1 行记录)

-- 返回数据类型为 timestamp

Test=# SELECT localtimestamp AS "日期和时间";

       日期和时间

-------------------------

 2013-04-09 11:24:32.175

(1 行记录)

-- 返回数据类型为 timestamp with time zone

Test=# SELECT current_timestamp AS "日期和时间";

         日期和时间

----------------------------

 2013-04-09 11:24:32.205+08

(1 行记录)

-- 返回数据类型为 timestamp with time zone

Test=# SELECT now() AS "日期和时间";

         日期和时间

----------------------------

 2013-04-09 11:24:32.235+08

(1 行记录)

-- 返回数据类型为 text.

Test=# SELECT timeofday() AS "日期和时间";

             日期和时间

-------------------------------------

 Tue Apr 09 11:24:32.886000 2013 HKT

(1 行记录)

部分带有精度参数的情况:

该精度导致结果的秒数域园整为指定小数位。如果没有精度参数, 将给予所能得到的全部精度。

Test=# SELECT CURRENT_TIME, CURRENT_TIME(2), CURRENT_TIME(1);

     timetz      |     timetz     |    timetz

-----------------+----------------+---------------

 11:46:28.147+08 | 11:46:28.15+08 | 11:46:28.1+08

(1 行记录)

Test=# SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(2), CURRENT_TIMESTAMP(1);

            now             |        timestamptz        |       timestamptz

----------------------------+---------------------------+--------------------------

 2013-04-09 11:46:28.177+08 | 2013-04-09 11:46:28.18+08 | 2013-04-09 11:46:28.2+08

(1 行记录)

Test=# SELECT LOCALTIME, LOCALTIME(2), LOCALTIME(1);

     time     |    time     |    time

--------------+-------------+------------

 11:46:28.207 | 11:46:28.21 | 11:46:28.2

(1 行记录)

Test=# SELECT LOCALTIMESTAMP, LOCALTIMESTAMP(2), LOCALTIMESTAMP(1);

        timestamp        |       timestamp        |       timestamp

-------------------------+------------------------+-----------------------

 2013-04-09 11:46:29.239 | 2013-04-09 11:46:29.24 | 2013-04-09 11:46:29.2

(1 行记录)

postgres获取当前时间,并格式化时间

to_char(now(), 'YYYY-MM-DD HH12:MI:SS'))本回答被提问者采纳

postgresql怎么截取日期到月份

1、首先需要找到一个带日期字段的数据表。

2、接下来向表中插入日期值。

3、然后通过month函数获取月份即可,注意month里添加的是列名。

4、运行SQL语句以后发现日期中的月份已经被提取出来了。

5、另外还可以在Month中直接加GETDATE函数获取当前时间的月份。

postgresql 数据库我要知道当前时间最近24小时的数据或者求出当前时间的前24小时是多少时间也可以求帮助

当前时间向前推一天:

SELECT current_timestamp - interval '1 day'

当前时间向前推一个月:

SELECT current_timestamp - interval '1 month'

当前时间向前推一年:

SELECT current_timestamp - interval '1 year'

当前时间向前推一小时:

SELECT current_timestamp - interval '1 hour'

当前时间向前推一分钟:

SELECT current_timestamp - interval '1 min'

当前时间向前推60秒:

SELECT current_timestamp - interval '60 second'

查询语句:

select * from tablename where TO_CHAR(create_time,'yyyy-MM-dd') = TO_CHAR((current_timestamp - interval '1 day'),'yyyy-MM-dd');

  • 本文相关:
  • python连接postgresql过程解析
  • postgresql 按小时分表(含触发器)的实现方式
  • postgresql图(graph)的递归查询实例
  • python 两个数据库postgresql对比
  • 详解centos7下postgresql 11的安装和配置教程
  • sql脚本函数编写postgresql数据库实现解析
  • centos7使用yum安装postgresql和postgis的方法
  • postgresql物化视图(materialized view)过程解析
  • postgresql新手入门教程
  • postgresql 创建表分区
  • postgresql安装、配置及简单使用方法
  • postgresql分区表(partitioning)应用实例详解
  • mac os上安装postgresql的教程
  • postgresql树形结构的递归查询示例
  • postgresql教程(十三):数据库管理详解
  • postgresql教程(四):数据类型详解
  • postgresql实战之启动恢复读取checkpoint记录失败的条件详解
  • postgresql图(graph)的递归查询实例
  • 如何获取postgreSQL中当前日期是星期几
  • postgresql如何获得当前时间的14位格式
  • postgres获取当前时间,并格式化时间
  • postgresql怎么截取日期到月份
  • postgresql 数据库我要知道当前时间最近24小时的数据或者求出当前时间的前24小时是多少时间...
  • PostgreSQL怎么在查询时,得到时间对应周的周一日期
  • postgreSQL中获得当前时间的系统函数是什么?
  • postgresql里面怎么得到两个日期相差多少秒,或者多少分钟
  • postgres如何获得一段连续的日期,比如从2015-01-01到2015-01-31之间的每一天...
  • 如何找到PostgreSQL数据库上次更新的时间
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved