Funciones de marca de tiempo

Funciones de marca de tiempo

Nombre Descripción
CURRENT_TIMESTAMP Genera un TIMESTAMP que corresponde a la hora de la solicitud.
TIMESTAMP_TRUNC Trunca un objeto TIMESTAMP a un nivel de detalle determinado.
UNIX_MICROS_TO_TIMESTAMP Convierte la cantidad de microsegundos desde 1970-01-01 00:00:00 UTC en un objeto TIMESTAMP.
UNIX_MILLIS_TO_TIMESTAMP Convierte la cantidad de milisegundos desde 1970-01-01 00:00:00 UTC en un objeto TIMESTAMP.
UNIX_SECONDS_TO_TIMESTAMP Convierte la cantidad de segundos desde 1970-01-01 00:00:00 UTC en un objeto TIMESTAMP.
TIMESTAMP_ADD Agrega un intervalo de tiempo a un objeto TIMESTAMP
TIMESTAMP_SUB Resta un intervalo de tiempo a un objeto TIMESTAMP
TIMESTAMP_TO_UNIX_MICROS Convierte un objeto TIMESTAMP en la cantidad de microsegundos desde 1970-01-01 00:00:00 UTC.
TIMESTAMP_TO_UNIX_MILLIS Convierte un objeto TIMESTAMP en la cantidad de milisegundos desde 1970-01-01 00:00:00 UTC.
TIMESTAMP_TO_UNIX_SECONDS Convierte un objeto TIMESTAMP en la cantidad de segundos transcurridos desde 1970-01-01 00:00:00 UTC.

CURRENT_TIMESTAMP

Sintaxis:

current_timestamp() -> TIMESTAMP

Descripción:

Obtiene la marca de tiempo al comienzo de la hora de solicitud input (interpretada como la cantidad de microsegundos desde 1970-01-01 00:00:00 UTC).

Este valor es estable dentro de una consulta y siempre se resolverá en el mismo valor si se llama varias veces.

TIMESTAMP_TRUNC

Sintaxis:

timestamp_trunc(timestamp: TIMESTAMP, granularity: STRING[, timezone: STRING]) -> TIMESTAMP

Descripción:

Trunca una marca de tiempo a un nivel de detalle determinado.

El argumento granularity debe ser una cadena y uno de los siguientes:

  • microsecond
  • millisecond
  • second
  • minute
  • hour
  • day
  • week
  • week([weekday])
  • month
  • quarter
  • year
  • isoyear

Si se proporciona el argumento timezone, el truncamiento se basará en los límites del calendario de la zona horaria proporcionada (p. ej., el truncamiento del día se truncará a la medianoche en la zona horaria proporcionada). El truncamiento respetará el horario de verano.

Si no se proporciona timezone, el truncamiento se basará en los límites del calendario UTC.

El argumento timezone debe ser una representación de cadena de una zona horaria de la base de datos tz, por ejemplo, America/New_York. También se puede usar una compensación de tiempo personalizada especificando una compensación desde GMT.

Ejemplos:

timestamp granularity timezone timestamp_trunc(timestamp, granularity, timezone)
2000-01-01 10:20:30:123456 UTC "second" No proporcionado 2001-01-01 10:20:30 UTC
1997-05-31 04:30:30 UTC "day" No proporcionado 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) No proporcionado 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

Sintaxis:

unix_micros_to_timestamp(input: INT64) -> TIMESTAMP

Descripción:

Convierte el objeto input (interpretado como la cantidad de microsegundos desde 1970-01-01 00:00:00 UTC) en un objeto TIMESTAMP. Muestra un error si input no se puede convertir en un objeto TIMESTAMP válido.

Ejemplos:

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

Sintaxis:

unix_millis_to_timestamp(input: INT64) -> TIMESTAMP

Descripción:

Convierte un objeto input (interpretado como la cantidad de milisegundos desde 1970-01-01 00:00:00 UTC) en un objeto TIMESTAMP. Muestra un error si input no se puede convertir en un objeto TIMESTAMP válido.

Ejemplos:

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

Sintaxis:

unix_seconds_to_timestamp(input: INT64) -> TIMESTAMP

Descripción:

Convierte un objeto input (interpretado como la cantidad de segundos desde 1970-01-01 00:00:00 UTC) en un objeto TIMESTAMP. Muestra un error si input no se puede convertir en un objeto TIMESTAMP válido.

Ejemplos:

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

Sintaxis:

timestamp_add(timestamp: TIMESTAMP, unit: STRING, amount: INT64) -> TIMESTAMP

Descripción:

Agrega un amount de unit desde timestamp. El argumento amount puede ser negativo, en cuyo caso equivale a TIMESTAMP_SUB.

El argumento unit debe ser una cadena y uno de los siguientes:

  • microsecond
  • millisecond
  • second
  • minute
  • hour
  • day

Se genera un error si la marca de tiempo resultante no se ajusta al rango de TIMESTAMP.

Ejemplos:

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

Sintaxis:

timestamp_sub(timestamp: TIMESTAMP, unit: STRING, amount: INT64) -> TIMESTAMP

Descripción:

Resta una amount de unit a timestamp. El argumento amount puede ser negativo, en cuyo caso equivale a TIMESTAMP_ADD.

El argumento unit debe ser una cadena y uno de los siguientes:

  • microsecond
  • millisecond
  • second
  • minute
  • hour
  • day

Se genera un error si la marca de tiempo resultante no se ajusta al rango de TIMESTAMP.

Ejemplos:

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

Sintaxis:

timestamp_to_unix_micros(input: TIMESTAMP) -> INT64

Descripción:

Convierte el objeto input en la cantidad de microsegundos desde 1970-01-01 00:00:00 UTC. Trunca los niveles más altos de precisión mediante el redondeo por defecto al principio del microsegundo.

Ejemplos:

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

Sintaxis:

timestamp_to_unix_millis(input: TIMESTAMP) -> INT64

Descripción:

Convierte el objeto input en la cantidad de milisegundos desde 1970-01-01 00:00:00 UTC. Trunca los niveles más altos de precisión mediante el redondeo por defecto al principio del milisegundo.

Ejemplos:

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

Sintaxis:

timestamp_to_unix_seconds(input: TIMESTAMP) -> INT64

Descripción:

Convierte el objeto input en la cantidad de segundos desde 1970-01-01 00:00:00 UTC. Trunca los niveles más altos de precisión mediante el redondeo por defecto al principio del segundo.

Ejemplos:

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()
)