PostgreSQL的时间/日期函数使用

来源:互联网 发布:linux cp 忽略文件 编辑:程序博客网 时间:2024/06/04 18:24

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 可以不写,其值可以是:

AbbreviationMeaningYYearsMMonths (in the date part)WWeeksDDaysHHoursMMinutes (in the time part)SSeconds

 

 

 



 

 

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时间/日期函数使用,可满足一般的开发运维应用。

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果没有地球人类会怎么办 小锅盖被屏蔽了怎么办 美的冰箱故障通讯不合格怎么办 美的冰箱通讯不合格怎么办 文明6金币降到0怎么办 紫癜肾炎长期尿潜血怎么办 肾移植后血压高怎么办 尿道长了个肿瘤怎么办 吃了有病的鹅怎么办 狗狗得了乳腺瘤怎么办 孕28周还是臀位怎么办 怀孕五个月胎位不正怎么办 33周了胎位不正怎么办 足月胎儿不足5斤怎么办 绒癌观察期怀孕怎么办 宝宝囱门闭合晚怎么办 慢性硬脑膜下血肿复发怎么办 佝偻病导致囟门晚闭怎么办 儿童液体补多了怎么办 脑脊液鼻漏3年了怎么办 结石掉到膀胱里怎么办 肾结石引起的腰疼怎么办 肾结石小但很疼怎么办 狗狗得了尿结石怎么办 生理期第四天必须游泳怎么办 碎石后吐的厉害怎么办 白细胞高红细胞高血尿怎么办? 早期肾癌术后复发该怎么办 肾结石因运动引起尿血怎么办 宝宝大便镜检阳性潜血怎么办 尿不尽刺痛带血怎么办 狗狗拉肚子拉血怎么办 肾血肿怎么办才吸收快 体检尿蛋白高3怎么办 肾炎会引起脸肿怎么办 12小孩尿蛋白3是怎么办 肝癌介入手术后肝功能不好怎么办 屁多且臭便秘怎么办 肝癌术1年后复发怎么办 怀孕便秘怎么办或大便太干拉不出 肠鸣便秘怎么办多尿