Fungsi stempel waktu

Fungsi Stempel Waktu

Nama Deskripsi
CURRENT_TIMESTAMP Menghasilkan TIMESTAMP yang sesuai dengan waktu permintaan.
TIMESTAMP_TRUNC Memangkas TIMESTAMP ke tingkat perincian tertentu.
UNIX_MICROS_TO_TIMESTAMP Mengonversi jumlah mikrodetik sejak 1970-01-01 00:00:00 UTC menjadi TIMESTAMP
UNIX_MILLIS_TO_TIMESTAMP Mengonversi jumlah milidetik sejak 1970-01-01 00:00:00 UTC menjadi TIMESTAMP
UNIX_SECONDS_TO_TIMESTAMP Mengonversi jumlah detik sejak 1970-01-01 00:00:00 UTC menjadi TIMESTAMP
TIMESTAMP_ADD Menambahkan interval waktu ke TIMESTAMP
TIMESTAMP_SUB Mengurangi interval waktu dari TIMESTAMP
TIMESTAMP_TO_UNIX_MICROS Mengonversi TIMESTAMP menjadi jumlah mikrodetik sejak 1970-01-01 00:00:00 UTC
TIMESTAMP_TO_UNIX_MILLIS Mengonversi TIMESTAMP menjadi jumlah milidetik sejak 1970-01-01 00:00:00 UTC
TIMESTAMP_TO_UNIX_SECONDS Mengonversi TIMESTAMP menjadi jumlah detik sejak 1970-01-01 00:00:00 UTC

CURRENT_TIMESTAMP

Sintaksis:

current_timestamp() -> TIMESTAMP

Deskripsi:

Mendapatkan stempel waktu pada awal input waktu permintaan (diartikan sebagai jumlah mikrodetik sejak 1970-01-01 00:00:00 UTC).

Fungsi ini stabil dalam kueri dan akan selalu di-resolve ke nilai yang sama jika dipanggil beberapa kali.

TIMESTAMP_TRUNC

Sintaksis:

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

Deskripsi:

Memangkas stempel waktu hingga ke tingkat perincian tertentu.

Argumen granularity harus berupa string dan salah satu dari nilai berikut:

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

Jika argumen timezone diberikan, pemotongan akan mengikuti batas kalender pada zona waktu tersebut (misalnya, pemotongan harian akan dilakukan hingga tengah malam pada zona waktu yang ditentukan). Pemotongan akan mengikuti waktu musim panas.

Jika timezone tidak diberikan, pemotongan akan didasarkan pada batas kalender UTC.

Argumen timezone harus berupa representasi string zona waktu dari database tz, misalnya America/New_York. Selisih waktu kustom juga dapat digunakan dengan menentukan selisih dari GMT.

Contoh:

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

Sintaksis:

unix_micros_to_timestamp(input: INT64) -> TIMESTAMP

Deskripsi:

Mengonversi input (diartikan sebagai jumlah mikrodetik sejak 1970-01-01 00:00:00 UTC) menjadi TIMESTAMP. Menampilkan error jika input tidak dapat dikonversi menjadi TIMESTAMP yang valid.

Contoh:

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

Sintaksis:

unix_millis_to_timestamp(input: INT64) -> TIMESTAMP

Deskripsi:

Mengonversi input (diartikan sebagai jumlah milidetik sejak 1970-01-01 00:00:00 UTC) menjadi TIMESTAMP. Menampilkan error jika input tidak dapat dikonversi menjadi TIMESTAMP yang valid.

Contoh:

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

Sintaksis:

unix_seconds_to_timestamp(input: INT64) -> TIMESTAMP

Deskripsi:

Mengonversi input (diartikan sebagai jumlah detik sejak 1970-01-01 00:00:00 UTC) menjadi TIMESTAMP. Menampilkan error jika input tidak dapat dikonversi menjadi TIMESTAMP yang valid.

Contoh:

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

Sintaksis:

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

Deskripsi:

Menambahkan amount unit dari timestamp. Argumen amount dapat bernilai negatif, yang dalam hal ini setara dengan TIMESTAMP_SUB.

Argumen unit harus berupa string dan salah satu dari nilai berikut:

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

Menampilkan error jika stempel waktu yang dihasilkan tidak sesuai dengan rentang TIMESTAMP.

Contoh:

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

Sintaksis:

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

Deskripsi:

Mengurangi amount unit dari timestamp. Argumen amount dapat bernilai negatif, yang dalam hal ini setara dengan TIMESTAMP_ADD.

Argumen unit harus berupa string dan salah satu dari nilai berikut:

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

Menampilkan error jika stempel waktu yang dihasilkan tidak sesuai dengan rentang TIMESTAMP.

Contoh:

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

Sintaksis:

timestamp_to_unix_micros(input: TIMESTAMP) -> INT64

Deskripsi:

Mengonversi input menjadi jumlah mikrodetik sejak 1970-01-01 00:00:00 UTC. Mengurangi tingkat presisi yang lebih tinggi dengan melakukan pembulatan ke bawah ke awal mikrodetik.

Contoh:

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

Sintaksis:

timestamp_to_unix_millis(input: TIMESTAMP) -> INT64

Deskripsi:

Mengonversi input menjadi jumlah milidetik sejak 1970-01-01 00:00:00 UTC. Mengurangi tingkat presisi yang lebih tinggi dengan melakukan pembulatan ke bawah ke awal milidetik.

Contoh:

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

Sintaksis:

timestamp_to_unix_seconds(input: TIMESTAMP) -> INT64

Deskripsi:

Mengonversi input menjadi jumlah detik sejak 1970-01-01 00:00:00 UTC. Mengurangi tingkat presisi yang lebih tinggi dengan melakukan pembulatan ke bawah ke awal detik.

Contoh:

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