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:
microsecondmillisecondsecondminutehourdayweekweek([weekday])monthquarteryearisoyear
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:
microsecondmillisecondsecondminutehourday
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:
microsecondmillisecondsecondminutehourday
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() )