跳到主要内容

日期部分函数

date_partdate_truncdate_diff 函数可用于提取或操作时间类型(例如 TIMESTAMPTIMESTAMPTZDATEINTERVAL)中的组成部分。

要提取或操作的部分由下表中的字符串指定。 “示例”列展示了时间戳 2021-08-03 11:59:44.123456 对应的值。 只有第一张表中的条目可以从 INTERVAL 中提取,或用于构造 INTERVAL

除了返回 DOUBLEjulianepoch 外,其他部分都按整数提取。由于 Goose 中不存在无穷整数值,对于无穷时间戳会返回 NULL

可用于日期部分和区间的部分说明符

说明符描述同义词示例
century公历世纪cent, centuries, c21
day公历日days, d, dayofmonth3
decade公历十年dec, decades, decs202
hour小时hr, hours, hrs, h11
microseconds分钟内微秒数microsecond, us, usec, usecs, usecond, useconds44123456
millennium公历千年mil, millenniums, millenia, mils, millenium3
milliseconds分钟内毫秒数millisecond, ms, msec, msecs, msecond, mseconds44123
minute分钟min, minutes, mins, m59
month公历月mon, months, mons8
quarter一年中的季度(1-4)quarters3
secondsec, seconds, secs, s44
year公历年yr, y, years, yrs2021

仅可作为日期部分说明符使用

说明符描述同义词示例
dayofweek星期几(星期日 = 0,星期六 = 6)weekday, dow2
dayofyear一年中的第几天(1-365/366)doy215
epoch自 1970-01-01 以来的秒数1760465850.6698709
era公历纪元(CE/AD、BCE/BC)1
isodowISO 星期几(星期一 = 1,星期日 = 7)2
isoyearISO 年(从包含 1 月 4 日的那一周的星期一开始)2021
julian儒略日编号。2459430.4998162435
timezone_hour时区偏移的小时部分0
timezone_minute时区偏移的分钟部分0
timezone时区偏移(秒)0
week周序号weeks, w31
yearweekYYYYWW 格式的 ISO 年和周序号202131

注意:除非安装了诸如 ICU 的时区扩展以支持 TIMESTAMP WITH TIME ZONE,否则所有时区相关部分都为零。

部分函数

以下是用于提取特定子字段的专用函数:

名称描述
century(date)世纪。
day(date)日。
dayofmonth(date)日(同义词)。
dayofweek(date)数值星期(星期日 = 0,星期六 = 6)。
dayofyear(date)一年中的第几天(从 1 开始,即 1 月 1 日 = 1)。
decade(date)十年(year / 10)。
epoch(date)自 1970-01-01 以来的秒数。
era(date)历法纪元。
hour(date)小时。
isodow(date)ISO 数值星期(星期一 = 1,星期日 = 7)。
isoyear(date)ISO 年(从包含 1 月 4 日的那一周的星期一开始)。
julian(date)DOUBLE 类型的儒略日编号。
microsecond(date)分钟内微秒数。
millennium(date)千年。
millisecond(date)分钟内毫秒数。
minute(date)分钟。
month(date)月。
quarter(date)季度。
second(date)秒。
timezone_hour(date)时区偏移小时部分。
timezone_minute(date)时区偏移分钟部分。
timezone(date)时区偏移(分钟)。
week(date)ISO 周。
weekday(date)数值星期同义词(星期日 = 0,星期六 = 6)。
weekofyear(date)ISO 周(同义词)。
year(date)年。
yearweek(date)由 ISO 年和两位 ISO 周序号组合而成的 BIGINT

century(date)

| Description | 世纪。 | | Example | century(DATE '1992-02-15') | | Result | 20 |

day(date)

| Description | 日。 | | Example | day(DATE '1992-02-15') | | Result | 15 |

dayofmonth(date)

| Description | 日(同义词)。 | | Example | dayofmonth(DATE '1992-02-15') | | Result | 15 |

dayofweek(date)

| Description | 数值星期(星期日 = 0,星期六 = 6)。 | | Example | dayofweek(DATE '1992-02-15') | | Result | 6 |

dayofyear(date)

| Description | 一年中的第几天(从 1 开始,即 1 月 1 日 = 1)。 | | Example | dayofyear(DATE '1992-02-15') | | Result | 46 |

decade(date)

| Description | 十年(year / 10)。 | | Example | decade(DATE '1992-02-15') | | Result | 199 |

epoch(date)

| Description | 自 1970-01-01 以来的秒数。 | | Example | epoch(DATE '1992-02-15') | | Result | 698112000 |

era(date)

| Description | 历法纪元。 | | Example | era(DATE '0044-03-15 (BC)') | | Result | 0 |

hour(date)

| Description | 小时。 | | Example | hour(timestamp '2021-08-03 11:59:44.123456') | | Result | 11 |

isodow(date)

| Description | ISO 数值星期(星期一 = 1,星期日 = 7)。 | | Example | isodow(DATE '1992-02-15') | | Result | 6 |

isoyear(date)

| Description | ISO 年(从包含 1 月 4 日的那一周的星期一开始)。 | | Example | isoyear(DATE '2022-01-01') | | Result | 2021 |

julian(date)

| Description | DOUBLE 类型的儒略日编号。 | | Example | julian(DATE '1992-09-20') | | Result | 2448886.0 |

microsecond(date)

| Description | 分钟内微秒数。 | | Example | microsecond(timestamp '2021-08-03 11:59:44.123456') | | Result | 44123456 |

millennium(date)

| Description | 千年。 | | Example | millennium(DATE '1992-02-15') | | Result | 2 |

millisecond(date)

| Description | 分钟内毫秒数。 | | Example | millisecond(timestamp '2021-08-03 11:59:44.123456') | | Result | 44123 |

minute(date)

| Description | 分钟。 | | Example | minute(timestamp '2021-08-03 11:59:44.123456') | | Result | 59 |

month(date)

| Description | 月。 | | Example | month(DATE '1992-02-15') | | Result | 2 |

quarter(date)

| Description | 季度。 | | Example | quarter(DATE '1992-02-15') | | Result | 1 |

second(date)

| Description | 秒。 | | Example | second(timestamp '2021-08-03 11:59:44.123456') | | Result | 44 |

timezone_hour(date)

| Description | 时区偏移小时部分。 | | Example | timezone_hour(DATE '1992-02-15') | | Result | 0 |

timezone_minute(date)

| Description | 时区偏移分钟部分。 | | Example | timezone_minute(DATE '1992-02-15') | | Result | 0 |

timezone(date)

| Description | 时区偏移(分钟)。 | | Example | timezone(DATE '1992-02-15') | | Result | 0 |

week(date)

| Description | ISO 周。 | | Example | week(DATE '1992-02-15') | | Result | 7 |

weekday(date)

| Description | 数值星期同义词(星期日 = 0,星期六 = 6)。 | | Example | weekday(DATE '1992-02-15') | | Result | 6 |

weekofyear(date)

| Description | ISO 周(同义词)。 | | Example | weekofyear(DATE '1992-02-15') | | Result | 7 |

year(date)

| Description | 年。 | | Example | year(DATE '1992-02-15') | | Result | 1992 |

yearweek(date)

| Description | 由 ISO 年和两位 ISO 周序号组合而成的 BIGINT。 | | Example | yearweek(DATE '1992-02-15') | | Result | 199207 |