pg 对时间的处理还是很灵活的, + - * /  都有支持

期间有个extract 函数还是很有用的,我们先来看看几个例子:[code]

postgres=# select extract(epoch from '1970-01-01'::timestamp) ;          
date_part 
-----------
         0
(1 row)

postgres=# select extract(epoch from '1970-01-01 00:00:01'::timestamp) ; 
date_part 
-----------
         1
(1 row)

postgres=# select  extract(epoch from now()-'2013-07-01'::timestamp) ; 
   date_part    
----------------
1936767.072764
(1 row)

postgres=# 
[/code]上面的例子是求出从1970-01-01 00:00:00 开始的秒数

extract 函数的功能是从时间中抽出相应的字段

他的使用格式:
EXTRACT(field FROM source)

其中field 包含以下几个值:

century:  世纪 

postgres=# select extract(century from '2013-07-01'::date) ; 
date_part 
-----------
        21
(1 row)

day : 一个月里的第几天[code]

postgres=# select extract(day from '2013-07-23'::date) ;   
date_part 
-----------
        23
(1 row)

postgres=# select extract(day from '2013-07-23 09:15:23'::timestamp) ;     
date_part 
-----------
        23
(1 row)

postgres=# select extract(day from '2013-07-23 09:15:23'::date) ;          
date_part 
-----------
        23
(1 row)

postgres=# select  extract(day from interval '40 days 3 hours' ) ;
date_part 
-----------
        40
(1 row)

[/code]decade : 10年期  ,第几个10年 

postgres=# select extract(decade from '2013-07-23 09:15:23'::date) ;    
date_part 
-----------
       201
(1 row)

dow   一周里的第几天 (sunday =0  saturday=6) 

postgres=# select extract(dow from '2013-07-23 09:15:23'::date) ;       
date_part 
-----------
         2
(1 row)

postgres=# select extract(dow from '2013-07-21 09:15:23'::date) ;  
date_part 
-----------
         0
(1 row)

doy  :  一年里的第几天(1-365/366)

postgres=# select extract(doy from '2013-07-21 09:15:23'::date) ;  
date_part 
-----------
       202
(1 row)

hour:  一天里小时数(0-23) 

postgres=# SELECT EXTRACT(HOUR FROM TIMESTAMP '2013-07-21 09:15:23');  
date_part 
-----------
         9
(1 row)

postgres=# select extract(hour from '2013-07-21 09:15:23'::date) ;     
date_part 
-----------
         0
(1 row)

注意这里,因为我们把'2013-07-21 09:15:23'::date) 转为date 类型是没有小时的,所以返回0 ,上面的timestamp 是有小时的,正确返回

isodow :  ISO 标准一周的天数 sunday=7  monday=1 

postgres=# select extract(isodow from '2013-07-21 09:15:23'::date) ;     
date_part 
-----------
         7
(1 row)

postgres=# select extract(dow from '2013-07-21 09:15:23'::date) ;       
date_part 
-----------
         0
(1 row)

postgres=# select extract(isodow from '2013-07-21 09:15:23'::timestamp) ;     
date_part 
-----------
         7
(1 row)

isoyear: ISO 标准的年 : (

ISO标准的纪年是从周一开始,以一月4号之前的周一为新的纪年的开始,跟公元纪年有区别,所以一年的一月份的前几天,或者12月的后几天可能会跟公元纪年法有区别:

postgres=# select extract(isoyear from '2013-01-01'::date) ; 
date_part 
-----------
      2013
(1 row)

postgres=# select extract(isoyear from '2012-12-31'::date) ;     
date_part 
-----------
      2013
(1 row)

postgres=# select extract(isoyear from '2012-12-30'::date) ;     
date_part 
-----------
      2012
(1 row)

postgres=# select extract(dow from '2012-12-31'::date) ;     
date_part 
-----------
         1
(1 row)

microseconds: 微秒

用微秒标识的 秒 的部分,包括后面小数部分:

postgres=# select  extract(microseconds from interval '3 days 5 mins 3.5 sec') ;
date_part 
-----------
   3500000
(1 row)

postgres=# select extract(microseconds from '2013-07-21 09:15:23'::timestamp)   
postgres-# ;
date_part 
-----------
  23000000
(1 row)

millennium  : 千禧年 ,千年纪年

目前是21世纪,第3个千禧年

postgres=# select extract(millennium from '2013-07-21 09:15:23'::timestamp) ;              
date_part 
-----------
         3
(1 row)

minute: 分钟(0-59) 

postgres=# select extract(minute from '2013-07-21 09:15:23'::timestamp) ;           
date_part 
-----------
        15
(1 row)

month : 月份   对timestamp 类型 返回1-12, 对interval 类型返回0-11

postgres=# select extract(month  from '2013-07-21 09:15:23'::timestamp) ;       
date_part 
-----------
         7
(1 row)

postgres=# select extract(month  from  interval ' 7 months 5 days' ) ;                                 
date_part 
-----------
         7
(1 row)

postgres=# select extract(month  from  interval '  5 days' ) ;  
date_part 
-----------
         0
(1 row)

postgres=# select extract(month  from  interval ' 12 months 5 days' ) ;    
date_part 
-----------
         0
(1 row)

postgres=# select extract(month  from  interval ' 11 months 5 days' ) ;   
date_part 
-----------
        11
(1 row)

quarter : 季度 

postgres=# select extract(quarter  from '2013-07-21 09:15:23'::timestamp) ;               
date_part 
-----------
         3
(1 row)

postgres=# select extract(quarter  from '2013-06-21 09:15:23'::timestamp) ;  
date_part 
-----------
         2
(1 row)

second : 秒 (0-59)

postgres=# select extract(second  from '2013-06-21 09:15:23'::timestamp) ;        
date_part 
-----------
        23
(1 row)

week :  周记 

postgres=# select extract(week   from '2013-06-21 09:15:23'::timestamp) ;         
date_part 
-----------
        25
(1 row)

year: 年纪 

postgres=# select extract(year   from '2013-06-21 09:15:23'::timestamp) ;     
date_part 
-----------
      2013
(1 row)

PG extract 函数示例的更多相关文章

  1. Format 函数示例

    Format 函数示例本示例显示用 Format 函数做格式化输出的不同用法.对于日期分隔号(/),时间分隔号(:),以及 AM/ PM 等文本而言,其真正的显示格式会因计算机上的国际标准不同而有所差 ...

  2. php extract 函数的妙用 数组键名为声明为变量,键值赋值为变量内容

    extract 函数的妙用 数组键名为声明为变量,键值赋值为变量内容 它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具

  3. ThinkPHP邮件发送函数示例

    ThinkPHP邮件发送函数示例详解 /** * 发送邮件 * @param $tomail * @param $subject * @param $body * @param string $con ...

  4. PHP extract() 函数

    PHP extract() 函数从数组中把变量导入到当前的符号表中. 对于数组中的每个元素,键名用于变量名,键值用于变量值. 第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时, ...

  5. (转)PHP中extract()函数的妙用

    近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_ ...

  6. (转)PHP中extract()函数的妙用

    近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_ ...

  7. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  8. MySQL EXTRACT() 函数

    定义和用法 EXTRACT() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 语法 EXTRACT(unit FROM date) date 参数是合法的日期表达式.unit 参 ...

  9. python3使用ctypes在windows中访问C和C++动态链接库函数示例

    python3使用ctypes在windows中访问C和C++动态链接库函数示例 这是我们的第一个示例,我们尽量简单,不传参,不返回,不访问其他的动态链接库 一 测试环境介绍和准备 测试环境: 操作系 ...

随机推荐

  1. 使用 NSData 分类实现,对 NSData 数据类型进行 AES 加密

    一般对NSData的数据类型进行加密,这里就将 .h .m 文件分享出来,有需要的可以直接粘贴使用.     下面是 .h 文件   #import <Foundation/Foundation ...

  2. WPF后台通知前台事件(ViewModelBase记录)

    版本1: 定义:public class ModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler P ...

  3. HDU - 1019 - Least Common Multiple - 质因数分解

    http://acm.hdu.edu.cn/showproblem.php?pid=1019 LCM即各数各质因数的最大值,搞个map乱弄一下就可以了. #include<bits/stdc++ ...

  4. (未使用AOP)使用ThreadLocal对象把Connection和当前线程绑定, 从而使一个线程中只有一个能控制事务的对象

    每个连接都有自己的独立事务,会造成数据的不一致 这组操作应该要么一起操作成功,要么一起操作失败, 应该使用同一个连接,只有一个能控制事务的对象 需要使用ThreadLocal对象把Connection ...

  5. Maven 依赖范围(转)

    1.什么是依赖范围? maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译时,maven 会将与编译相关的依赖引入classpath中,测试时,maven会将测试相关的的依赖 ...

  6. [Xcode 实际操作]九、实用进阶-(31)为IAP(支付方式)内购功能的具体实现和测试

    目录:[Swift]Xcode实际操作 本文将演示如何为IAP(支付方式)内购功能的具体实现和测试. 内购是苹果市场上的一种常见的盈利方式. 在项目中确保已经安装了第三方库[Pod],双击[Podfi ...

  7. Nginx实现负载均衡(nginx + tomcat应用分布式)

    一.       工具   nginx-1.8.0 apache-tomcat-6.0.33 二.    目标   实现高性能负载均衡的Tomcat集群: 三.    步骤   1.首先下载Nginx ...

  8. Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你

    很多情况大数据集群需要获取业务数据,用于分析.通常有两种方式: 业务直接或间接写入的方式 业务的关系型数据库同步到大数据集群的方式 第一种可以是在业务中编写代码,将觉得需要发送的数据发送到消息队列,最 ...

  9. BZOJ2152聪聪可可

    bzoj传送门 luogu传送门 这题算是很sb的点分治了,最近在点分治复习,写了练练手,对于这个题只需要对统计0,1,2出现的次数就好了吧,然后发现答案不对,也就是每个点对需要算两遍嘛,0也算,所以 ...

  10. 基于java开发的在线题库系统tamguo

    简介 探果网(简称tamguo)是基于java开发的在线题库系统,包括 在线访问 后台运营 会员中心 书籍中心 管理员账号:system 密码:123456 因为线上数据和测试数据没有做到隔离,作者已 ...