时间戳函数
| 名称 | 说明 |
CURRENT_TIMESTAMP
|
生成与请求时间对应的 TIMESTAMP。 |
TIMESTAMP_TRUNC
|
将 TIMESTAMP 按指定粒度进行截断。 |
UNIX_MICROS_TO_TIMESTAMP
|
将自 1970-01-01 00:00:00 UTC 以来的微秒数转换为 TIMESTAMP |
UNIX_MILLIS_TO_TIMESTAMP
|
将自 1970-01-01 00:00:00 UTC 以来的毫秒数转换为 TIMESTAMP |
UNIX_SECONDS_TO_TIMESTAMP
|
将自 1970-01-01 00:00:00 UTC 以来的秒数转换为 TIMESTAMP |
TIMESTAMP_ADD
|
将时间间隔加到 TIMESTAMP |
TIMESTAMP_SUB
|
从 TIMESTAMP 中减去一个时间间隔 |
TIMESTAMP_TO_UNIX_MICROS
|
将 TIMESTAMP 转换为自 1970-01-01 00:00:00 UTC 以来的微秒数 |
TIMESTAMP_TO_UNIX_MILLIS
|
将 TIMESTAMP 转换为自 1970-01-01 00:00:00 UTC 以来的毫秒数 |
TIMESTAMP_TO_UNIX_SECONDS
|
将 TIMESTAMP 转换为自 1970-01-01 00:00:00 UTC 以来的秒数 |
CURRENT_TIMESTAMP
语法:
current_timestamp() -> TIMESTAMP
说明:
获取请求时间 input 起始点的时间戳(该时间戳被解释为自 1970-01-01 00:00:00 UTC 以来经过的微秒数)。
此函数在单次查询中是稳定的,即多次调用将始终解析为同一个值。
TIMESTAMP_TRUNC
语法:
timestamp_trunc(timestamp: TIMESTAMP, granularity: STRING[, timezone: STRING]) -> TIMESTAMP
说明:
将时间戳按指定粒度向下取整。
granularity 实参必须为字符串,且必须是以下值之一:
microsecondmillisecondsecondminutehourdayweekweek([weekday])monthquarteryearisoyear
如果提供了 timezone 参数,则截断将以指定时区的日历边界为准(例如,以指定时区的午夜作为一天的截断时间)。截断将遵循夏令时。
如果未提供 timezone,截断将以 UTC 日历边界为准。
timezone 实参应为 tz 数据库中某个时区的字符串表示法,例如 America/New_York。 您还可以通过指定与 GMT 的偏移值来使用自定义时间偏移值。
示例:
timestamp |
granularity |
timezone |
timestamp_trunc(timestamp, granularity, timezone) |
|---|---|---|---|
| 2000-01-01 10:20:30:123456 UTC | "second" | 未提供 | 2001-01-01 10:20:30 UTC |
| 1997-05-31 04:30:30 UTC | "day" | 未提供 | 1997-05-31 00:00:00 UTC |
| 1997-05-31 04:30:30 UTC | "day" | "America/Los_Angeles" | 1997-05-30 07:00:00 UTC |
| 2001-03-16 04:00:00 UTC | "week(friday) | 未提供 | 2001-03-16 00:00:00 UTC |
| 2001-03-23 04:00:00 UTC | "week(friday) | "America/Los_Angeles" | 2001-03-23 17:00:00 UTC |
| 2026-01-24 20:00:00 UTC | "month" | "GMT+06:32:43" | 2026-01-01T06:32:43 UTC |
UNIX_MICROS_TO_TIMESTAMP
语法:
unix_micros_to_timestamp(input: INT64) -> TIMESTAMP
说明:
将 input(解释为自 1970-01-01 00:00:00 UTC 以来的微秒数)转换为 TIMESTAMP。如果 input 无法转换为有效的 TIMESTAMP,则会抛出 error。
示例:
input |
unix_micros_to_timestamp(input) |
|---|---|
| 0L | 1970-01-01 00:00:00 UTC |
| 400123456L | 1970-01-01 00:06:40.123456 UTC |
| -1000000L | 1969-12-31 23:59:59 UTC |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("createdAtMicros").unixMicrosToTimestamp().as("createdAtString") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("createdAtMicros").unixMicrosToTimestamp().as("createdAtString") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("createdAtMicros").unixMicrosToTimestamp().alias("createdAtString") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("createdAtMicros").unixMicrosToTimestamp().alias("createdAtString") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select( Field.of("createdAtMicros") .unix_micros_to_timestamp() .as_("createdAtString") ) .execute() )
UNIX_MILLIS_TO_TIMESTAMP
语法:
unix_millis_to_timestamp(input: INT64) -> TIMESTAMP
说明:
将 input(解释为自 1970-01-01 00:00:00 UTC 以来的毫秒数)转换为 TIMESTAMP。如果 input 无法转换为有效的 TIMESTAMP,则会抛出 error。
示例:
input |
unix_millis_to_timestamp(input) |
|---|---|
| 0L | 1970-01-01 00:00:00 UTC |
| 4000123L | 1970-01-01 01:06:40.123 UTC |
| -1000000L | 1969-12-31 23:43:20 UTC |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("createdAtMillis").unixMillisToTimestamp().as("createdAtString") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("createdAtMillis").unixMillisToTimestamp().as("createdAtString") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("createdAtMillis").unixMillisToTimestamp().alias("createdAtString") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("createdAtMillis").unixMillisToTimestamp().alias("createdAtString") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select( Field.of("createdAtMillis") .unix_millis_to_timestamp() .as_("createdAtString") ) .execute() )
UNIX_SECONDS_TO_TIMESTAMP
语法:
unix_seconds_to_timestamp(input: INT64) -> TIMESTAMP
说明:
将 input(解释为自 1970-01-01 00:00:00 UTC 以来的秒数)转换为 TIMESTAMP。如果 input 无法转换为有效的 TIMESTAMP,则会抛出 error。
示例:
input |
unix_seconds_to_timestamp(input) |
|---|---|
| 0L | 1970-01-01 00:00:00 UTC |
| 60L | 1970-01-01 00:01:00 UTC |
| -300L | 1969-12-31 23:55:00 UTC |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("createdAtSeconds").unixSecondsToTimestamp().as("createdAtString") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("createdAtSeconds").unixSecondsToTimestamp().as("createdAtString") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("createdAtSeconds").unixSecondsToTimestamp().alias("createdAtString") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("createdAtSeconds").unixSecondsToTimestamp().alias("createdAtString") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select( Field.of("createdAtSeconds") .unix_seconds_to_timestamp() .as_("createdAtString") ) .execute() )
TIMESTAMP_ADD
语法:
timestamp_add(timestamp: TIMESTAMP, unit: STRING, amount: INT64) -> TIMESTAMP
说明:
将 amount unit 加到 timestamp。amount 实参可以为负值,在这种情况下,其效果等同于 TIMESTAMP_SUB。
unit 实参必须为字符串,且必须是以下值之一:
microsecondmillisecondsecondminutehourday
如果生成的时间戳超出 TIMESTAMP 范围,将抛出错误。
示例:
timestamp |
unit |
amount |
timestamp_add(timestamp, unit, amount) |
|---|---|---|---|
| 2025-02-20 00:00:00 UTC | "minute" | 2L | 2025-02-20 00:02:00 UTC |
| 2025-02-20 00:00:00 UTC | "hour" | -4L | 2025-02-19 20:00:00 UTC |
| 2025-02-20 00:00:00 UTC | "day" | 5L | 2025-02-25 00:00:00 UTC |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("createdAt").timestampAdd("day", 3653).as("expiresAt") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("createdAt").timestampAdd(3653, .day).as("expiresAt") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("createdAt") .timestampAdd("day", 3653) .alias("expiresAt") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("createdAt").timestampAdd("day", 3653).alias("expiresAt") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select(Field.of("createdAt").timestamp_add("day", 3653).as_("expiresAt")) .execute() )
TIMESTAMP_SUB
语法:
timestamp_sub(timestamp: TIMESTAMP, unit: STRING, amount: INT64) -> TIMESTAMP
说明:
从 timestamp 减去 amount unit。amount 实参可以为负值,在这种情况下,其效果等同于 TIMESTAMP_ADD。
unit 实参必须为字符串,且必须是以下值之一:
microsecondmillisecondsecondminutehourday
如果生成的时间戳超出 TIMESTAMP 范围,将抛出错误。
示例:
timestamp |
unit |
amount |
timestamp_sub(timestamp, unit, amount) |
|---|---|---|---|
| 2026-07-04 00:00:00 UTC | "minute" | 40L | 2026-07-03 23:20:00 UTC |
| 2026-07-04 00:00:00 UTC | "hour" | -24L | 2026-07-05 00:00:00 UTC |
| 2026-07-04 00:00:00 UTC | "day" | 3L | 2026-07-01 00:00:00 UTC |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("expiresAt").timestampSubtract("day", 14).as("sendWarningTimestamp") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("expiresAt").timestampSubtract(14, .day).as("sendWarningTimestamp") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("expiresAt") .timestampSubtract("day", 14) .alias("sendWarningTimestamp") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("expiresAt").timestampSubtract("day", 14).alias("sendWarningTimestamp") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select( Field.of("expiresAt") .timestamp_subtract("day", 14) .as_("sendWarningTimestamp") ) .execute() )
TIMESTAMP_TO_UNIX_MICROS
语法:
timestamp_to_unix_micros(input: TIMESTAMP) -> INT64
说明:
将 input 转换为自 1970-01-01 00:00:00 UTC 以来的微秒数。通过向下舍入到微秒来截断更高的精度。
示例:
input |
timestamp_to_unix_micros(input) |
|---|---|
| 1970-01-01 00:00:00 UTC | 0L |
| 1970-01-01 00:06:40.123456 UTC | 400123456L |
| 1969-12-31 23:59:59 UTC | -1000000L |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMicros().as("unixMicros") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("dateString").timestampToUnixMicros().as("unixMicros") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMicros().alias("unixMicros") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMicros().alias("unixMicros") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select(Field.of("dateString").timestamp_to_unix_micros().as_("unixMicros")) .execute() )
TIMESTAMP_TO_UNIX_MILLIS
语法:
timestamp_to_unix_millis(input: TIMESTAMP) -> INT64
说明:
将 input 转换为自 1970-01-01 00:00:00 UTC 以来的毫秒数。通过向下舍入到毫秒来截断更高的精度。
示例:
input |
timestamp_to_unix_millis(input) |
|---|---|
| 1970-01-01 00:00:00 UTC | 0L |
| 1970-01-01 01:06:40.123 UTC | 4000123L |
| 1969-12-31 23:43:20 | -1000000L |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMillis().as("unixMillis") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("dateString").timestampToUnixMillis().as("unixMillis") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMillis().alias("unixMillis") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMillis().alias("unixMillis") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select(Field.of("dateString").timestamp_to_unix_millis().as_("unixMillis")) .execute() )
TIMESTAMP_TO_UNIX_SECONDS
语法:
timestamp_to_unix_seconds(input: TIMESTAMP) -> INT64
说明:
将 input 转换为自 1970-01-01 00:00:00 UTC 以来的秒数。通过向下舍入到秒来截断更高的精度。
示例:
input |
timestamp_to_unix_seconds(input) |
|---|---|
| 1970-01-01 00:00:00 UTC | 0L |
| 1970-01-01 00:01:00 UTC | 60L |
| 1969-12-31 23:55:00 UTC | -300L |
Web
const result = await execute(db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixSeconds().as("unixSeconds") ) );
Swift
let result = try await db.pipeline() .collection("documents") .select([ Field("dateString").timestampToUnixSeconds().as("unixSeconds") ]) .execute()
Kotlin
val result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixSeconds().alias("unixSeconds") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixSeconds().alias("unixSeconds") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("documents") .select(Field.of("dateString").timestamp_to_unix_seconds().as_("unixSeconds")) .execute() )