首页 数据库 mysql教程 PostgreSQL的时间/日期函数使用

PostgreSQL的时间/日期函数使用

Jun 07, 2016 pm 02:58 PM
postgresql 使用 函数 日期 时间

PostgreSQL的时间/日期函数使用 PostgreSQL的常用时间函数使用整理如下: 一、获取系统时间函数 1.1 获取当前完整时间 select now(); david=# select now(); now ------------------------------- 2013-04-12 15:39:40.399711+08 (1 row) david=# current_ti

PostgreSQL的时间/日期函数使用

 

PostgreSQL的常用时间函数使用整理如下:

 

一、获取系统时间函数

 

1.1 获取当前完整时间

 

select now();

 

 

david=# select now();

              now              

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

 2013-04-12 15:39:40.399711+08

(1 row)

 

david=# 

 

current_timestamp 同 now() 函数等效。

 

 

david=# select current_timestamp;

              now              

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

 2013-04-12 15:40:22.398709+08

(1 row)

 

david=# 

 

1.2 获取当前日期

 

select current_date;

 

 

david=# select current_date;

    date    

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

 2013-04-12

(1 row)

 

david=# 

 

1.3 获取当前时间

 

select current_time;

 

 

david=# select current_time;

       timetz       

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

 15:43:31.101726+08

(1 row)

 

david=#

 

二、时间的计算

 

david=# select now();

              now              

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

 2013-04-12 15:47:13.244721+08

(1 row)

 

david=#

 

2.1 两年后

 

 

david=# select now() + interval '2 years';

           ?column?            

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

 2015-04-12 15:49:03.168851+08

(1 row)

 

david=# select now() + interval '2 year'; 

           ?column?            

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

 2015-04-12 15:49:12.378727+08

(1 row)

 

david=# select now() + interval '2 y';   

           ?column?           

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

 2015-04-12 15:49:25.46986+08

(1 row)

 

david=# select now() + interval '2 Y';

           ?column?            

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

 2015-04-12 15:49:28.410853+08

(1 row)

 

david=# select now() + interval '2Y'; 

           ?column?            

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

 2015-04-12 15:49:31.122831+08

(1 row)

 

david=# 

 

2.2 一个月后

 

 

david=# select now() + interval '1 month';  

           ?column?           

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

 2013-05-12 15:51:22.24373+08

(1 row)

 

david=# select now() + interval 'one month';

ERROR:  invalid input syntax for type interval: "one month"

LINE 1: select now() + interval 'one month';

                                ^

david=# 

 

2.3 三周前

 

david=# select now() - interval '3 week';

           ?column?            

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

 2013-03-22 16:00:04.203735+08

(1 row)

 

david=# 

 

2.4 十分钟后

 

 

david=# select now() + '10 min';                 

           ?column?            

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

 2013-04-12 16:12:47.445744+08

(1 row)

 

david=# 

 

说明:

 

interval 可以不写,其值可以是:

 

Abbreviation Meaning

Y Years

M Months (in the date part)

W Weeks

D Days

H Hours

M Minutes (in the time part)

S Seconds

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5 计算两个时间差

 

使用 age(timestamp, timestamp)

 

 

david=# select age(now(), timestamp '1989-02-05');

                  age                   

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

 24 years 2 mons 7 days 17:05:49.119848

(1 row)

 

david=# 

 

 

david=# select age(timestamp '2007-09-15');       

          age           

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

 5 years 6 mons 27 days

(1 row)

 

david=#

 

三、时间字段的截取

 

在开发过程中,经常要取日期的年,月,日,小时等值,PostgreSQL 提供一个非常便利的EXTRACT函数。

 

 

EXTRACT(field FROM source)

 

field 表示取的时间对象,source 表示取的日期来源,类型为 timestamp、time 或 interval。

 

3.1 取年份

 

 

david=# select extract(year from now());

 date_part 

-----------

      2013

(1 row)

 

david=# 

 

3.2 取月份

 

 

david=# select extract(month from now());    

 date_part 

-----------

         4

(1 row)

 

david=# 

 

 

david=# select extract(day from timestamp '2013-04-13');

 date_part 

-----------

        13

(1 row)

 

david=# 

 

 

david=# SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');

 date_part 

-----------

        40

(1 row)

 

david=# 

 

3.3 查看今天是一年中的第几天

 

 

david=# select extract(doy from now());

 date_part 

-----------

       102

(1 row)

 

david=# 

 

3.4 查看现在距1970-01-01 00:00:00 UTC 的秒数

 

david=# select extract(epoch from now());

    date_part     

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

 1365755907.94474

(1 row)

 

david=# 

 

3.5 把epoch 值转换回时间戳

 

david=# SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1369755555 * INTERVAL '1 second'; 

        ?column?        

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

 2013-05-28 23:39:15+08

(1 row)

 

david=# 

 

以上是基本的PG时间/日期函数使用,可满足一般的开发运维应用。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? Apr 26, 2024 am 09:40 AM

BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包?

golang函数动态创建新函数的技巧 golang函数动态创建新函数的技巧 Apr 25, 2024 pm 02:39 PM

golang函数动态创建新函数的技巧

C++ 函数命名中参数顺序的考虑 C++ 函数命名中参数顺序的考虑 Apr 24, 2024 pm 04:21 PM

C++ 函数命名中参数顺序的考虑

如何在Java中写出高效和可维护的函数? 如何在Java中写出高效和可维护的函数? Apr 24, 2024 am 11:33 AM

如何在Java中写出高效和可维护的函数?

C++ 函数默认参数与可变参数的优缺点比较 C++ 函数默认参数与可变参数的优缺点比较 Apr 21, 2024 am 10:21 AM

C++ 函数默认参数与可变参数的优缺点比较

excel函数公式大全 excel函数公式大全 May 07, 2024 pm 12:04 PM

excel函数公式大全

C++ 函数返回引用类型有什么好处? C++ 函数返回引用类型有什么好处? Apr 20, 2024 pm 09:12 PM

C++ 函数返回引用类型有什么好处?

C++ 函数中引用参数和指针参数的高级用法 C++ 函数中引用参数和指针参数的高级用法 Apr 21, 2024 am 09:39 AM

C++ 函数中引用参数和指针参数的高级用法

See all articles