פונקציות של חותמות זמן
| שם | תיאור |
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
|
TIMESTAMP_DIFF
|
הפונקציה מחזירה את המספר השלם של מרווחי unit שצוינו בין שני TIMESTAMP.
|
TIMESTAMP_EXTRACT
|
הפונקציה מחלצת part ספציפי (למשל, שנה, חודש, יום) מתוך TIMESTAMP.
|
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. הפונקציה מחזירה error אם אי אפשר להמיר את input לערך TIMESTAMP תקין.
לדוגמה:
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("createdAtMicros").unixMicrosToTimestamp().as("createdAtString") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(unixMicrosToTimestamp(field("createdAtMicros")).as("createdAtString")) .execute() .get();
UNIX_MILLIS_TO_TIMESTAMP
תחביר:
unix_millis_to_timestamp(input: INT64) -> TIMESTAMP
תיאור:
הפונקציה ממירה את input (שמפורש כמספר אלפיות השנייה מאז 1970-01-01 00:00:00 UTC) ל-TIMESTAMP. הפונקציה מחזירה error אם אי אפשר להמיר את input לערך TIMESTAMP תקין.
לדוגמה:
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("createdAtMillis").unixMillisToTimestamp().as("createdAtString") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(unixMillisToTimestamp(field("createdAtMillis")).as("createdAtString")) .execute() .get();
UNIX_SECONDS_TO_TIMESTAMP
תחביר:
unix_seconds_to_timestamp(input: INT64) -> TIMESTAMP
תיאור:
הפונקציה ממירה את input (שמפורש כמספר השניות מאז 1970-01-01 00:00:00 UTC) ל-TIMESTAMP. הפונקציה מחזירה error אם אי אפשר להמיר את input לערך TIMESTAMP תקין.
לדוגמה:
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("createdAtSeconds").unixSecondsToTimestamp().as("createdAtString") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(unixSecondsToTimestamp(field("createdAtSeconds")).as("createdAtString")) .execute() .get();
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("createdAt").timestampAdd("day", 3653).as("expiresAt") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(timestampAdd(field("createdAt"), "day", 3653).as("expiresAt")) .execute() .get();
TIMESTAMP_SUB
תחביר:
timestamp_sub(timestamp: TIMESTAMP, unit: STRING, amount: INT64) -> TIMESTAMP
תיאור:
הפונקציה מחסרת את הערך amount של unit מהערך timestamp. הארגומנט 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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("expiresAt").timestampSubtract("day", 14).as("sendWarningTimestamp") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(timestampSubtract(field("expiresAt"), "day", 14).as("sendWarningTimestamp")) .execute() .get();
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMicros().as("unixMicros") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(timestampToUnixMicros(field("dateString")).as("unixMicros")) .execute() .get();
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixMillis().as("unixMillis") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(timestampToUnixMillis(field("dateString")).as("unixMillis")) .execute() .get();
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 |
Node.js
const result = await db.pipeline() .collection("documents") .select( field("dateString").timestampToUnixSeconds().as("unixSeconds") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("documents") .select(timestampToUnixSeconds(field("dateString")).as("unixSeconds")) .execute() .get();
TIMESTAMP_DIFF
תחביר:
timestamp_diff(end: TIMESTAMP, start: TIMESTAMP, unit: STRING) -> INT64
תיאור:
הפונקציה מחזירה את המספר השלם של מרווחי unit שצוינו בין שני TIMESTAMP.
- הפונקציה מחזירה ערך שלילי אם
endקודם ל-start. - הפונקציה מעגלת כל יחידה לא שלמה. לדוגמה, הפונקציה
timestamp_diff("2021-01-01 00:00:01", "2021-01-01 00:00:00", "minute")מחזירה0.
הארגומנט unit חייב להיות מחרוזת ואחד מהערכים הבאים:
microsecondmillisecondsecondminutehourday
לדוגמה:
end |
start |
unit |
timestamp_diff(end, start, unit) |
|---|---|---|---|
| 2026-07-04 00:01:00 UTC | 2026-07-04 00:00:00 UTC | "second" | 60L |
| 2026-07-04 00:00:00 UTC | 2026-07-05 00:00:00 UTC | "day" | -1L |
| 2026-07-04 00:00:59 UTC | 2026-07-04 00:00:00 UTC | "minute" | 0L |
TIMESTAMP_EXTRACT
תחביר:
timestamp_extract(timestamp: TIMESTAMP, part: STRING[, timezone: STRING]) -> INT64
תיאור:
הפונקציה מחלצת part ספציפי (למשל, שנה, חודש, יום) מ-timestamp.
הארגומנט part חייב להיות מחרוזת ואחד מהערכים הבאים:
microsecondmillisecondsecondminutehourday-
dayofweek: מחזירה ערך בין 1 (יום ראשון) ל-7 (יום שבת). dayofyear-
week: הפונקציה מחזירה את מספר השבוע בשנה, החל מ-1 ביום ראשון הראשון של השנה. -
week([weekday]): מחזירה את מספר השבוע בשנה, החל מהיוםweekdayשצוין. monthquarteryear-
isoweek: מחזירה את מספר השבוע לפי ISO 8601. -
isoyear: מחזירה את השנה לפי מספור השבועות בתקן ISO 8601.
אם מציינים את הארגומנט timezone, החילוץ יתבסס על היומן של אזור הזמן שצוין. החילוץ יתבצע בהתאם לשעון הקיץ.
אם לא מציינים את timezone, החילוץ יתבסס על UTC.
הארגומנט timezone צריך להיות מחרוזת שמייצגת אזור זמן ממסד הנתונים של אזורי הזמן, למשל America/New_York. אפשר גם להשתמש בהזזת זמן בהתאמה אישית על ידי ציון הזזה מ-GMT.
לדוגמה:
timestamp |
part |
timezone |
timestamp_extract(timestamp, part, timezone) |
|---|---|---|---|
| 2025-02-20 10:20:30 UTC | "year" | לא צוין | 2025 |
| 2025-02-20 10:20:30 UTC | "day" | לא צוין | 20 |
| 2025-12-31 23:59:59 UTC | "year" | "Asia/Tokyo" | 2026 |