Metabase

DatetimeDiff

تابع datetimeDiff فاصلهٔ زمانی بین دو مقدار تاریخ/زمان را بر اساس واحد زمانی مشخص محاسبه می‌کند.
توجه کنید که اختلاف بر حسب واحدهای کامل محاسبه می‌شود (مثال زیر را ببینید).

SyntaxExample
datetimeDiff(datetime1, datetime2, unit)datetimeDiff("2022-02-01", "2022-03-01", "month")
اختلاف دو مقدار datetime (یعنی datetime2 منهای datetime1) را در واحد زمانی مشخص برمی‌گرداند.1

پارامترها

پارامترهای datetime1 و datetime2 می‌توانند یکی از موارد زیر باشند:

  • نام یک ستون Timestamp،
  • یک عبارت سفارشی که datetime برمی‌گرداند، یا
  • یک رشته با فرمت "YYYY-MM-DD" یا "YYYY-MM-DDTHH:MM:SS".

پارامتر unit می‌تواند یکی از مقادیر زیر باشد:

  • "year"
  • "quarter"
  • "month"
  • "week"
  • "day"
  • "hour"
  • "minute"
  • "second"

محاسبهٔ «سن» (Age)

فرض کنید پنیرساز هستید و می‌خواهید فرایند کهنه‌شدن (Aging) پنیرها را دنبال کنید:

CheeseAging StartAging EndMature Age (Months)
ProvoloneJanuary 19, 2022March 17, 20221
FetaJanuary 25, 2022May 3, 20223
Monterey JackJanuary 27, 2022October 11, 20228

ستون Mature Age (Months) یک ستون سفارشی است با این عبارت:

datetimeDiff([Aging Start], [Aging End], "month")

برای محاسبهٔ «سن فعلی» یک پنیر بر حسب ماه، می‌توانید از now به‌عنوان پارامتر دوم استفاده کنید:

datetimeDiff([Aging Start], now, "month")

برای محاسبهٔ سن فعلی بر حسب روز:

datetimeDiff([Aging Start], now, "day")

انواع دادهٔ قابل قبول

نوع دادهسازگار با datetimeDiff
String
Number
Timestamp
Boolean
JSON

در این مستند از «timestamp» و «datetime» برای اشاره به هر نوع دادهٔ زمانی پشتیبانی‌شده در متابیس استفاده می‌کنیم. برای جزئیات بیش‌تر، بخش مناطق زمانی را ببینید.

اگر Timestampها در دیتابیس شما به‌صورت رشته یا عدد ذخیره شده‌اند، یک ادمین می‌تواند روی صفحهٔ Table Metadata آن‌ها را به نوع Timestamp Cast کند.

محدودیت‌ها

در حال حاضر تابع datetimeDiff برای دیتابیس زیر در دسترس نیست:

  • Druid

توابع مرتبط

در این بخش توابع و فرمول‌هایی را می‌بینید که مانند عبارت datetimeDiff متابیس کار می‌کنند، همراه با نکاتی برای انتخاب بهترین گزینه.

SQL

وقتی سؤالی را با Query builder اجرا می‌کنید، متابیس تنظیمات گرافیکی شما (فیلترها، Summarize و…) را به کوئری تبدیل کرده و روی دیتابیس اجرا می‌کند.

اگر دادهٔ نمونهٔ پنیرها را در PostgreSQL ذخیره کرده باشید:

SELECT DATE_PART('month', AGE(aging_end, aging_start)) AS mature_age_months
FROM cheese

این کوئری معادل عبارت زیر در متابیس است:

datetimeDiff([Aging Start], [Aging End], "month")

بعضی دیتابیس‌ها (مثل Snowflake و BigQuery) توابعی مانند DATEDIFF یا DATE_DIFF دارند. برای جزئیات بیش‌تر می‌توانید به فهرست راهنماهای رایج SQL مراجعه کنید.

Spreadsheets

اگر دادهٔ نمونهٔ پنیرها در Spreadsheet باشد و ستون "Aging Start" در ستون B و "Aging End" در ستون C قرار داشته باشند:

DATEDIF(B1, C1, "M")

همان نتیجه‌ای را تولید می‌کند که:

datetimeDiff([Aging Start], [Aging End], "month")

بله، اسم تابع DATEDIF است و فقط یک حرف «F» دارد.

Python

اگر دادهٔ نمونهٔ پنیرها را در یک DataFrame به نام df داشته باشید، می‌توانید تاریخ‌ها را مستقیماً از هم کم کنید و با استفاده از timedelta64 در numpy اختلاف را به ماه تبدیل کنید:

df['Mature Age (Months)'] = (df['Aging End'] - df['Aging Start']) / np.timedelta64(1, 'M')

که معادل این عبارت در متابیس است:

datetimeDiff([Aging Start], [Aging End], "month")

مطالعهٔ بیشتر