欢迎投稿

今日深度:

PostgreSQL中的日期/时间函数详解,

PostgreSQL中的日期/时间函数详解,


目录
  • 零、前言
  • 一、获取当前时间
  • 二、时间的加减
  • 三、格式化函数
    • 3.1时间转字符串
    • 3.2字符串转日期
    • 3.3字符串转时间
    • 3.4Unix时间戳转时间
  • 四、一些重要函数
    • 4.1时间间隔
    • 4.2时间截取
  • 五、时间的转换
    • 六、收!

      零、前言

      公司里有一台阿里云RDS数据库用了PPAS(Postgres PlusTM Advanced Server),在处理日期/时间时遇到一些问题,花了点时间整理如下。

      一、获取当前时间

      • select now()
      • select current_timestamp
      • select localtimestamp
      • select clock_timestamp()

      有时候,我们不需要这么完整细致的时间,自然就有

      • select current_date
      • select current_time
      • select localtime

      二、时间的加减

      老实说,这是见过最奇怪的一套时间计算的方式了。

      select now() + interval '2 years';
      select now() + interval '2 year'; 
      select now() + interval '2 y';
      select now() + interval '2 Y';
      select now() + interval '2Y';

      结果都是一样的:

      interval部分可以不写,以此类推,月、日、小时、分钟、秒的加减计算也同理。

      AbbreviationMeaning
      YYears
      MMonths (in the date part)
      WWeeks
      DDays
      HHours
      MMinutes (in the time part)
      SSeconds

      值得一提的是单写M会默认为分钟的加减,针对月的加减建议写完整的month或months或者简写mon。

      三、格式化函数

      3.1时间转字符串

      to_char(timestamp,text)

      3.2字符串转日期

      to_date(text,text)

      3.3字符串转时间

      to_timestamp(text,text)

      3.4Unix时间戳转时间

      to_timestamp(unixtime)

      关于时间格式的模式,丢表跑:

      模式描述
      HH一天的小时数(01-12)
      HH12一天的小时数(01-12)
      HH24一天的小时数(00-23)
      MI分钟(00-59)
      SS秒(00-59)
      MS毫秒(000-999)
      US微秒(000000-999999)
      AM正午标识(大写)
      Y,YYY带逗号的年(4和更多位)
      YYYY年(4和更多位)
      YYY年的后三位
      YY年的后两位
      Y年的最后一位
      MONTH全长大写月份名(空白填充为9字符)
      Month全长混合大小写月份名(空白填充为9字符)
      month全长小写月份名(空白填充为9字符)
      MON大写缩写月份名(3字符)
      Mon缩写混合大小写月份名(3字符)
      mon小写缩写月份名(3字符)
      MM月份号(01-12)
      DAY全长大写日期名(空白填充为9字符)
      Day全长混合大小写日期名(空白填充为9字符)
      day全长小写日期名(空白填充为9字符)
      DY缩写大写日期名(3字符)
      Dy缩写混合大小写日期名(3字符)
      dy缩写小写日期名(3字符)
      DDD一年里的日子(001-366)
      DD一个月里的日子(01-31)
      D一周里的日子(1-7;周日是1)
      W一个月里的周数(1-5)(第一周从该月第一天开始)
      WW一年里的周数(1-53)(第一周从该年的第一天开始)

      四、一些重要函数

      4.1时间间隔

      age(timestamp, timestamp)

      当然也可以只输入一个参数,计算current_date与入参的时间间隔。

      4.2时间截取

      date_part(text, timestamp)
      extract(field from timestamp)

      还可以截断至指定精度

      date_trunc(text, timestamp)

      如图所示,小时后的分和秒被置为0。

      五、时间的转换

      select timestamp '2012-05-12 18:54:54';  --2012-05-12 18:54:54
      select date '2012-05-12 18:54:54';       --2012-05-12
      select time  '2012-05-12 18:54:54';      --18:54:54
      select TIMESTAMP WITH TIME ZONE '2012-05-12 18:54:54'   
      --2012-05-12 18:54:54+08
      
      --与unix时间戳的转换
      SELECT TIMESTAMP 'epoch' + 1341174767 * INTERVAL '1 second'; 
      --2012-07-01 20:32:47

      六、收!

      到此这篇关于PostgreSQL中日期/时间函数详解的文章就介绍到这了,更多相关PostgreSQL日期/时间函数内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • PostgreSQL 如何获取当前日期时间及注意事项
      • postgresql中时间转换和加减操作
      • PostgreSQL中常用的时间日期脚本使用教程
      • postgresql 计算时间差的秒数、天数实例
      • postgresql 实现查询某时间区间的所有日期案例
      • pgsql时间处理的一些常用方式总结

      www.htsjk.Com true http://www.htsjk.com/shujukunews/45342.html NewsArticle PostgreSQL中的日期/时间函数详解, 目录 零、前言 一、获取当前时间 二、时间的加减 三、格式化函数 3.1时间转字符串 3.2字符串转日期 3.3字符串转时间 3.4Unix时间戳转时间 四、一些重要...
      评论暂时关闭