数据类型格式化函数-有修改

https://www.cnblogs.com/orangeform/archive/2012/05/04/2294643.html

数据类型格式化函数:

PostgreSQL格式化函数提供一套有效的工具用于把各种数据类型(日期/时间、integer、floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型。下面列出了这些函数,它们都遵循一个公共的调用习惯:第一个参数是待格式化的值,而第二个是定义输出或输出格式的模板。
函数 返回类型 描述 例子
to_char(timestamp, text) text 把时间戳转换成字串 to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text) text 把时间间隔转为字串 to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text) text 把整数转换成字串 to_char(125, '999')
to_char(double precision, text) text 把实数/双精度数转换成字串 to_char(125.8::real, '999D9')
to_char(numeric, text) text 把numeric转换成字串 to_char(-125.8, '999D99S')
to_date(text, text) date 把字串转换成日期 to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) timestamp 把字串转换成时间戳 to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(double) timestamp 把UNIX纪元转换成时间戳 to_timestamp(200120400)
to_number(text, text) numeric 把字串转换成numeric to_number('12,454.8-', '99G999D9S')

  1. 用于日期/时间格式化的模式:
    模式 描述
    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)(第一周从该年的第一天开始):备注周日为每周的第一天

IW 一年里的周数(1-53)(第一周从该年的第一天开始):备注周一为每周的第一天

  1. 用于数值格式化的模板模式:
    模式 描述
    9 带有指定数值位数的值
    0 带前导零的值
    .(句点) 小数点
    ,(逗号) 分组(千)分隔符
    PR 尖括号内负值
    S 带符号的数值
    L 货币符号
    D 小数点
    G 分组分隔符
    MI 在指明的位置的负号(如果数字 < 0)
    PL 在指明的位置的正号(如果数字 > 0)
    SG 在指明的位置的正/负号

八、时间/日期函数和操作符:

  1. 下面是PostgreSQL中支持的时间/日期操作符的列表:
    操作符 例子 结果
  • date '2001-09-28' + integer '7' date '2001-10-05'
  • date '2001-09-28' + interval '1 hour' timestamp '2001-09-28 01:00'
  • date '2001-09-28' + time '03:00' timestamp '2001-09-28 03:00'
  • interval '1 day' + interval '1 hour' interval '1 day 01:00'
  • timestamp '2001-09-28 01:00' + interval '23 hours' timestamp '2001-09-29 00:00'
  • time '01:00' + interval '3 hours' time '04:00'
    • interval '23 hours' interval '-23:00'
  • date '2001-10-01' - date '2001-09-28' integer '3'
  • date '2001-10-01' - integer '7' date '2001-09-24'
  • date '2001-09-28' - interval '1 hour' timestamp '2001-09-27 23:00'
  • time '05:00' - time '03:00' interval '02:00'
  • time '05:00' - interval '2 hours' time '03:00'
  • timestamp '2001-09-28 23:00' - interval '23 hours' timestamp '2001-09-28 00:00'
  • interval '1 day' - interval '1 hour' interval '23:00'
  • timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' interval '1 day 15:00'
  • interval '1 hour' * double precision '3.5' interval '03:30'
    / interval '1 hour' / double precision '1.5' interval '00:40'

    1. 日期/时间函数:
      函数 返回类型 描述 例子 结果
      age(timestamp, timestamp) interval 减去参数,生成一个使用年、月的"符号化"的结果 age('2001-04-10', timestamp '1957-06-13') 43 years 9 mons 27 days
      age(timestamp) interval 从current_date减去得到的数值 age(timestamp '1957-06-13') 43 years 8 mons 3 days
      current_date date 今天的日期
      current_time time 现在的时间
      current_timestamp timestamp 日期和时间
      date_part(text, timestamp) double 获取子域(等效于extract) date_part('hour', timestamp '2001-02-16 20:38:40') 20
      date_part(text, interval) double 获取子域(等效于extract) date_part('month', interval '2 years 3 months') 3
      date_trunc(text, timestamp) timestamp 截断成指定的精度 date_trunc('hour', timestamp '2001-02-16 20:38:40') 2001-02-16 20:00:00+00
      extract(field from timestamp) double 获取子域 extract(hour from timestamp '2001-02-16 20:38:40') 20
      extract(field from interval) double 获取子域 extract(month from interval '2 years 3 months') 3
      localtime time 今日的时间
      localtimestamp timestamp 日期和时间
      now() timestamp 当前的日期和时间(等效于 current_timestamp)
      timeofday() text 当前日期和时间

    2. EXTRACT,date_part函数支持的field:
      域 描述 例子 结果
      CENTURY 世纪 EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13'); 20
      DAY (月分)里的日期域(1-31) EXTRACT(DAY from TIMESTAMP '2001-02-16 20:38:40'); 16
      DECADE 年份域除以10 EXTRACT(DECADE from TIMESTAMP '2001-02-16 20:38:40'); 200
      DOW 每周的星期号(0-6;星期天是0) (仅用于timestamp) EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40'); 5
      DOY 一年的第几天(1 -365/366) (仅用于 timestamp) EXTRACT(DOY from TIMESTAMP '2001-02-16 20:38:40'); 47
      HOUR 小时域(0-23) EXTRACT(HOUR from TIMESTAMP '2001-02-16 20:38:40'); 20
      MICROSECONDS 秒域,包括小数部分,乘以 1,000,000。 EXTRACT(MICROSECONDS from TIME '17:12:28.5'); 28500000
      MILLENNIUM 千年 EXTRACT(MILLENNIUM from TIMESTAMP '2001-02-16 20:38:40'); 3
      MILLISECONDS 秒域,包括小数部分,乘以 1000。 EXTRACT(MILLISECONDS from TIME '17:12:28.5'); 28500
      MINUTE 分钟域(0-59) EXTRACT(MINUTE from TIMESTAMP '2001-02-16 20:38:40'); 38
      MONTH 对于timestamp数值,它是一年里的月份数(1-12);对于interval数值,它是月的数目,然后对12取模(0-11) EXTRACT(MONTH from TIMESTAMP '2001-02-16 20:38:40'); 2
      QUARTER 该天所在的该年的季度(1-4)(仅用于 timestamp) EXTRACT(QUARTER from TIMESTAMP '2001-02-16 20:38:40'); 1
      SECOND 秒域,包括小数部分(0-59[1]) EXTRACT(SECOND from TIMESTAMP '2001-02-16 20:38:40'); 40
      WEEK 该天在所在的年份里是第几周。 EXTRACT(WEEK from TIMESTAMP '2001-02-16 20:38:40'); 7
      YEAR 年份域 EXTRACT(YEAR from TIMESTAMP '2001-02-16 20:38:40'); 2001

    3. 当前日期/时间:
      我们可以使用下面的函数获取当前的日期和/或时间∶
      CURRENT_DATE
      CURRENT_TIME
      CURRENT_TIMESTAMP
      CURRENT_TIME (precision)
      CURRENT_TIMESTAMP (precision)
      LOCALTIME
      LOCALTIMESTAMP
      LOCALTIME (precision)
      LOCALTIMESTAMP (precision)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342