Skip to content

DATE_PART

功能描述

从日期/时间值中提取特定的部分(如年、月、日、小时、分钟、秒等)。

语法格式

DATE_PART(FIELD, SOURCE)

参数说明

  • FIELD:要提取的时间部分,字符串值。并非每种输入的数据类型都适用于所有字段。例如,无法从DATE类型中提取小于一天的字段,也无法从TIME类型中提取一天或更长时间的字段。
  • SOURCE:要从中提取时间部分的日期/时间值,类型为DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIME、TIME WITH TIME ZONE或INTERVAL的值表达式。

FIELD参数取值

FIELD取值说明
millennium千年。19xx的年份在第二个千年里,第三个千年从2001年1月1日开始。对于INTERVAL类型值,表示年份除以1000。
century世纪。对于INTERVAL类型值,表示年份除以100。
decade十年。即年份除以10。
year年份。
quarter季度。范围为[1,4]。
month
  • 对于TIMESTAMP类型值,表示一年里的月份数,范围为[1,12]。
  • 对于INTERVAL类型值,表示月数,然后对12取模(除以12取余数),范围为[0,11]。
  • week该天所在的ISO 8601周编号的年份里是第几周。
    day
  • 对于TIMESTAMP类型值,表示日期中的天,范围为[1,31]。
  • 对于INTERVAL类型值,表示天数。
  • hour小时。范围为[0,23],时间间隔不受限制。
    minute分钟。范围为[0,59]。
    second秒。范围为[0,59]。
    milliseconds毫秒。时间值的秒部分(包括小数部分)乘以1000。
    microseconds微秒。时间值的秒部分(包括小数部分)乘以1000000。
    isoyear日期所落在的ISO 8601周编号的年,不适用于时间间隔。
    根据ISO 8601标准,一年的第1周是包含该年第一个星期四的那一周。某些年份的第一周可能从上一年的最后一两天开始。某些年份的最后一周可能延续到下一年的前几天。
    例如2024-12-30的结果是2025,2022-1-1的结果是2021。
    dow星期几。0表示星期日,1表示星期一,依此类推到6表示星期六。
    isodow星期几。1表示星期一,2表示星期二,依此类推到7表示星期日。
    julian与日期或时间戳对应的儒略日(JDN,Julian Day Number)。
    doy一年中的第几天。范围为[1,366]。
    epoch
  • 对于TIMESTAMP WITH TIME ZONE类型值,表示自1970-01-01 00:00:00 UTC以来的秒数(之前的时间戳为负值)。
  • 对于DATE类型值和TIMESTAMP类型值,是自1970-01-01 00:00:00以来的标称秒数(nominal number of seconds)。
  • 对于INTERVAL类型值,它是时间间隔的总秒数。
  • timezone与UTC的时区偏移,以秒为单位。正值对应于UTC东边的时区,负值对应UTC西边的时区。
    timezone_hour时区偏移的小时部分。
    timezone_minute时区偏移的分钟部分。

    函数返回类型

    DOUBLE PRECISION类型。

    示例

    sql
    SQL> SELECT DATE_PART('year', '2020-10-20 12:30:25.5020555');
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    2020 |
    
    SQL> SELECT DATE_PART('mon', '2020-10-20 12:30:25.5020555');
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    10 |
    
    SQL> SELECT DATE_PART('hrs', '2020-10-20 12:30:25.5020555');
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    12 |