首页 > 数据库 >PostgreSQL 时间函数 extract函数和epoch 新纪元时间的使用

PostgreSQL 时间函数 extract函数和epoch 新纪元时间的使用

时间:2023-06-22 20:55:08浏览次数:49  
标签:00 PostgreSQL 函数 timestamp epoch date extract select row

Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此,它支持其关健字 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、WEEKDAY、YEARDAY。

计算时间差天数

select extract(day FROM (age('2017-12-10'::date , '2017-12-01'::date)));

计算时间差秒数

select extract(epoch FROM (now() - (now()-interval '1 day') ));

extract函数格式:
extract (field from source)
extract函数是从日期或者时间数值里面抽取子域,比如年、月、日等。source必须是timestamp、time、interval类型的值表达式。field是一个标识符或字符串,是从源数据中的抽取的域。

  1. century (世纪)
    test=# select extract (century from timestamp '2017-07-31 22:18:00');
    date_part

    21

(1 row)
2. year (年)
test=# select extract (year from timestamp '2017-07-31 22:18:00');
date_part

  2017

(1 row)
3. decade (得到年份除10的值)
test=# select extract (decade from timestamp '2017-07-31 22:18:00');
date_part

   201

(1 row)
4. millennium(得到第几个千年,0-1000第一个,1001-2000第二个,2001-3000第三个)
test=# select extract (millennium from timestamp '2017-07-31 22:18:00');
date_part

     3

(1 row)
5. quarter (季度)
test=# select extract (quarter from timestamp '2017-07-31 22:18:00');
date_part

     3

(1 row)
6. month (月份)
test=# select extract (month from timestamp '2017-07-31 22:18:00');
date_part

     7

(1 row)
test=# select extract (month from interval '2 years 11 months');

date_part

    11

(1 row)
7. week (返回当前是几年的第几个周)
test=# select extract (week from timestamp '2017-07-31 22:18:00');
date_part

    31

(1 row)
8. dow (返回当前日期是周几,周日:0,周一:1,周二:2,...)
test=# select extract (dow from timestamp '2017-07-31 22:18:00');
date_part

     1

(1 row)
9. day (本月的第几天)
test=# select extract (day from timestamp '2017-07-31 22:18:00');
date_part

    31

(1 row)
10. doy (本年的第几天)
test=# select extract (doy from timestamp '2017-07-31 22:18:00');
date_part

   212

(1 row)
11. hour (小时)
test=# select extract (hour from timestamp '2017-07-31 22:18:00');
date_part

    22

(1 row)
12. min (得到时间中的分钟)
test=# select extract (min from timestamp '2017-07-31 22:18:00');
date_part

    18

(1 row)
13. sec (返回时间中的秒)
test=# select extract (sec from timestamp '2017-07-31 22:18:00');
date_part

     0

(1 row)

新纪元时间 Epoch 是以 1970-01-01 00:00:00 UTC 为标准的时间,将目标时间与 1970-01-01 00:00:00
时间的差值以秒来计算 ,单位是秒,可以是负值; 有些应用会将时间存储成epoch 时间形式,以提高读取效率,
下面演示下 pg 中 epoch 时间的使用换算方法。

--1 将 time stamp 时间转换成 epoch 时间
francs=> select extract(epoch from timestamp without time zone '1970-01-01 01:00:00');

date_part

  3600

(1 row)

francs=> select extract(epoch from timestamp without time zone '1970-01-01 02:00:00');

date_part

  7200

(1 row)

francs=> select extract(epoch from interval '+1 hours');

date_part

  3600

(1 row)

francs=> select extract(epoch from interval '-1 hours');

date_part

 -3600

(1 row)

--2 将epoch 时间转换成 time stamp 时间
francs=> select timestamp without time zone 'epoch' + 3600 * interval '1 second';

​ ?column?

1970-01-01 01:00:00
(1 row)

francs=> select timestamp without time zone 'epoch' + 7200 * interval '1 second';

​ ?column?

1970-01-01 02:00:00
(1 row)

原文链接:https://blog.csdn.net/weixin_43084715/article/details/122302179

标签:00,PostgreSQL,函数,timestamp,epoch,date,extract,select,row
From: https://www.cnblogs.com/javaxubo/p/17498312.html

相关文章

  • PostgreSQL合并多行数据为一行,string_agg函数
    通过id列来聚合belong_user_saved列,应用string_agg函数,只要id一样则把第二列通过逗号连接起来聚合前:聚合后:SELECT C.ID, string_agg(u.name::varchar,',')belong_user_savedFROM customerC leftjoincustomer_territoryctonct.customer=c.id leftjoinuser_......
  • PostgreSql的聚合函数--string_agg
    聚合函数顾名思义,聚合函数就是类似于min(),max(),sum()等函数,当然这些都是SQL标准的函数,应该都是比较熟悉,也比较常见。这边不对这些常见的函数进行介绍,主要涉及的是PostgreSql自带的一些特色聚合函数进行介绍,自己学习,也与大家共享。主要介绍的聚合函数:String_agg,xmlagg,array_ag......
  • PG数据库中的聚集函数
    PG中的聚集函数聚集函数从一个输入值的集合计算出一个单一值。函数参数类型返回类型描述array_agg(*expression*)任何非数组类型参数类型的数组输入值(包括空)被连接到一个数组array_agg(*expression*)任意数组类型和参数数据类型相同输入数组被串接到一个更......
  • Java intern函数详解
    先看一个例子如果你会了那这篇文章你没必要看了,如果不会那请看下去,你一定会有收获:Strings=newString("hello");Stringstr1=s+"world";Stringstr3="helloworld";system.out.println(srt1==str3);Strings=newString("hello");Stringstr1=s+&q......
  • pgsql获取日期段_PostgreSQL时间段查询
    1.今日select*from"表名"whereto_date("时间字段"::text,'yyyy-mm-dd')=current_date2.昨日select*from"表名"whereto_date("时间字段"::text,'yyyy-mm-dd')=current_date-13.最近半个月select*from"表名"......
  • postgreSQL数据库 id自增
    感谢!!!原文:https://blog.csdn.net/weixin_43453621/article/details/1258907742.链接上postgreSQL数据库3.新建表4.增加序列6.添加ID自增长nextval('swp_id'::regclass)或者nextval('swp_id')前者是完整语句后者是简写系统会自动添::regclass,都一样的7.保存最后......
  • postgresql 导入数据库表并重设自增属性的操作
    postgresql使用navicat软件导出数据库表,在导入会数据库的操作。postgresql的自增字段是通过序列sequence来实现的。1、先删除导出的数据库表中的自增属性2、导入数据库表之后,需要创建序列。注:一般序列名称由数据表名+主键字段+seq组成(通常情况下主键字段即为自增字段),如下......
  • PostgreSQL中表名、字段名大小写问题
    感谢原文章博主:https://blog.csdn.net/zengchaoyue/article/details/8279744学习hibernate的时候,数据库用了PostgreSQL,第一节课就抛错,User实体映射没有死活不能导出表。总是提示这一句:​*ERROR:syntaxerroratornear"User"。*​后来发现,如果把表名设成t_user这......
  • mysql与oracle的日期时间函数小结
    本文的日期/时间全部格式化为”2016-01-0101:01:01“形式;MONITOR_TIME为数据库表字段;字符串与日期/时间相互转换函数Oracle日期/时间转字符串函数:to_char(t.MONITOR_TIME,‘yyyy-mm-ddhh24:mi:ss‘)asmonitorTime字符串转日期/时间函数:TO_Date(”2016-01-0101:01:01“,......
  • PostgreSQL日期相减
    在PostgreSQL中可以直接对时间进行加减运算:、SELECTnow()::timestamp+'1year';--当前时间加1年SELECTnow()::timestamp+'1month';--当前时间加一个月SELECTnow()::timestamp+'1day';--当前时间加一天SELECTnow()::timestamp+'1hour';--当前时间加一个小时......