* Replace underscores with hyphens * remove temporary code * fix style check * fix collapse
23 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
39 | کار با تاریخ و زمان |
توابع برای کار با تاریخ و زمان
پشتیبانی از مناطق زمانی
همه توابع برای کار با تاریخ و زمان است که یک استفاده منطقی برای منطقه زمانی می تواند یک زمان اختیاری استدلال منطقه دوم قبول. مثال: اسیا/یکاترینبورگ. در این مورد از منطقه زمانی مشخص شده به جای محلی (پیش فرض) استفاده می کنند.
SELECT
toDateTime('2016-06-15 23:00:00') AS time,
toDate(time) AS date_local,
toDate(time, 'Asia/Yekaterinburg') AS date_yekat,
toString(time, 'US/Samoa') AS time_samoa
┌────────────────time─┬─date_local─┬─date_yekat─┬─time_samoa──────────┐
│ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-16 │ 2016-06-15 09:00:00 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘
فقط مناطق زمانی که از مجموعه مقالات توسط تعداد کل ساعت متفاوت پشتیبانی می شوند.
توتیمزون
تبدیل زمان یا تاریخ و زمان به منطقه زمانی مشخص شده است.
اسباب بازی
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد اوینت16 حاوی شماره سال (میلادی).
فهرست توزیع جدید
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد کوچک8 حاوی شماره سه ماهه.
تامونت
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد کوچک8 حاوی شماره ماه (1-12).
سال
تبدیل یک تاریخ و یا تاریخ با گذشت زمان به یک uint16 تعداد شامل تعداد روز از سال (1-366).
تودیفمون
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد اوینت8 حاوی تعداد روز از ماه (1-31).
تدیفوک
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد اوینت8 حاوی تعداد روز هفته (دوشنبه است 1, و یکشنبه است 7).
تمام
تبدیل تاریخ با هم به یک uint8 شماره حاوی تعداد ساعت در زمان 24 ساعته (0-23). This function assumes that if clocks are moved ahead, it is by one hour and occurs at 2 a.m., and if clocks are moved back, it is by one hour and occurs at 3 a.m. (which is not always true – even in Moscow the clocks were twice changed at a different time).
تامینوت
تبدیل تاریخ با هم به یک uint8 شماره حاوی تعداد دقیقه از ساعت (0-59).
جای خالی
تبدیل تاریخ با هم به یک uint8 شماره حاوی شماره دوم در دقیقه (0-59). ثانیه جهش برای به حساب نمی.
تیونیتیمستمپ
برای استدلال حسگر ناحیه رنگی: تبدیل ارزش به نمایندگی عددی داخلی خود (برچسب زمان یونیکس). برای استدلال رشته: تاریخ ساعت پارسه از رشته با توجه به منطقه زمانی (بحث دوم اختیاری, منطقه زمانی سرور به طور پیش فرض استفاده می شود) و مربوط برچسب زمان یونیکس می گرداند. برای استدلال تاریخ: رفتار نامشخص است.
نحو
toUnixTimestamp(datetime)
toUnixTimestamp(str, [timezone])
مقدار بازگشتی
- زمان یونیکس را برمی گرداند.
نوع: UInt32
.
مثال
پرسوجو:
SELECT toUnixTimestamp('2017-11-05 08:07:47', 'Asia/Tokyo') AS unix_timestamp
نتیجه:
┌─unix_timestamp─┐
│ 1509836867 │
└────────────────┘
سال نو
دور یک تاریخ یا تاریخ با زمان به روز اول سال. تاریخ را برمی گرداند.
تاستارتوفیزیر
دور کردن تاریخ یا تاریخ با زمان به روز اول سال ایزو. تاریخ را برمی گرداند.
toStartOfQuarter
دور یک تاریخ یا تاریخ با زمان به روز اول سه ماهه. اولین روز از سه ماهه است یا 1 ژانویه, 1 مارس, 1 جولای, یا 1 اکتبر. تاریخ را برمی گرداند.
ماهی تابه
دور پایین تاریخ یا تاریخ با زمان به روز اول ماه. تاریخ را برمی گرداند.
!!! attention "توجه" رفتار تجزیه تاریخ نادرست اجرای خاص است. تاتر ممکن است صفر تاریخ بازگشت, پرتاب یک استثنا و یا انجام “natural” سرریز کردن.
روز قیامت
دور کردن یک تاریخ یا تاریخ با زمان به نزدیکترین دوشنبه. تاریخ را برمی گرداند.
تستارتوفک (تی [, حالت])
دور یک تاریخ یا تاریخ را با زمان به نزدیکترین یکشنبه یا دوشنبه با حالت. تاریخ را برمی گرداند. استدلال حالت کار می کند دقیقا مانند استدلال حالت به یدک کش (). برای نحو تک استدلال, ارزش حالت 0 استفاده شده است.
روزهای سه بعدی
دور پایین تاریخ با زمان به شروع روز.
تاستارتوفهور
دور پایین تاریخ با زمان به شروع ساعت.
حفاظت
دور پایین تاریخ با زمان به شروع دقیقه.
تستارتوفیفومینوت
دور پایین تاریخ با زمان به شروع فاصله پنج دقیقه.
حفاظت
دور پایین تاریخ با زمان به شروع فاصله ده دقیقه.
toStartOfFifteenMinutes
دور پایین تاریخ با زمان به شروع فاصله پانزده دقیقه.
toStartOfInterval(time_or_data فاصله x واحد [, time_zone])
این یک تعمیم توابع دیگر به نام است toStartOf*
. به عنوان مثال,
toStartOfInterval(t, INTERVAL 1 year)
همان را برمی گرداند toStartOfYear(t)
,
toStartOfInterval(t, INTERVAL 1 month)
همان را برمی گرداند toStartOfMonth(t)
,
toStartOfInterval(t, INTERVAL 1 day)
همان را برمی گرداند toStartOfDay(t)
,
toStartOfInterval(t, INTERVAL 15 minute)
همان را برمی گرداند toStartOfFifteenMinutes(t)
و غیره
& تمام کردن
تبدیل یک تاریخ با زمان به یک تاریخ ثابت خاص, در حالی که حفظ زمان.
ترلتیویینوم
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد سال, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیواارترن
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد سه ماهه, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیومنتنوم
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد ماه, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیواکنام
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد هفته, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیدینوم
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد روز, با شروع از یک نقطه ثابت خاص در گذشته.
تورلاتویورنام
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد ساعت, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیومینوتنوم
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد دقیقه, با شروع از یک نقطه ثابت خاص در گذشته.
ترلتیویسکنندوم
تبدیل یک تاریخ با زمان و یا تاریخ به تعداد دوم, با شروع از یک نقطه ثابت خاص در گذشته.
ریز ریز کردن
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد اوینت16 حاوی شماره سال ایزو.
هشدار داده می شود
تبدیل یک تاریخ و یا تاریخ با گذشت زمان به یک uint8 تعداد شامل iso هفته شماره.
تاریخ [, حالت])
این تابع تعداد هفته برای تاریخ و یا تاریخ ساعت می گرداند. فرم دو برهان یدک کش () شما را قادر به مشخص کنید که هفته در روز یکشنبه یا دوشنبه شروع می شود و چه مقدار بازگشتی باید در محدوده 0 تا 53 یا از 1 به 53 باشد. اگر استدلال حالت حذف شده است, حالت پیش فرض است 0.
toISOWeek()
یک تابع سازگاری است که معادل است toWeek(date,3)
.
جدول زیر توضیح می دهد که چگونه استدلال حالت کار می کند.
حالت | اولین روز هفته | گستره | Week 1 is the first week … |
---|---|---|---|
0 | یکشنبه | 0-53 | با یکشنبه در این سال |
1 | دوشنبه | 0-53 | با 4 یا چند روز در سال جاری |
2 | یکشنبه | 1-53 | با یکشنبه در این سال |
3 | دوشنبه | 1-53 | با 4 یا چند روز در سال جاری |
4 | یکشنبه | 0-53 | با 4 یا چند روز در سال جاری |
5 | دوشنبه | 0-53 | با دوشنبه در این سال |
6 | یکشنبه | 1-53 | با 4 یا چند روز در سال جاری |
7 | دوشنبه | 1-53 | با دوشنبه در این سال |
8 | یکشنبه | 1-53 | شامل ژانویه 1 |
9 | دوشنبه | 1-53 | شامل ژانویه 1 |
برای مقادیر حالت با معنی “with 4 or more days this year,” هفته ها با توجه به ایزو شماره 8601: 1988:
-
اگر هفته حاوی ژانویه 1 است 4 یا چند روز در سال جدید, هفته است 1.
-
در غیر این صورت, این هفته گذشته سال گذشته است, و هفته بعد هفته است 1.
برای مقادیر حالت با معنی “contains January 1”, هفته شامل ژانویه 1 هفته است 1. مهم نیست که چند روز در سال جدید هفته شامل, حتی اگر شامل تنها یک روز.
toWeek(date, [, mode][, Timezone])
پارامترها
date
– Date or DateTime.mode
– Optional parameter, Range of values is [0,9], default is 0.Timezone
– Optional parameter, it behaves like any other conversion function.
مثال
SELECT toDate('2016-12-27') AS date, toWeek(date) AS week0, toWeek(date,1) AS week1, toWeek(date,9) AS week9;
┌───────date─┬─week0─┬─week1─┬─week9─┐
│ 2016-12-27 │ 52 │ 52 │ 1 │
└────────────┴───────┴───────┴───────┘
تاریخ [, حالت])
را برمی گرداند سال و هفته برای تاریخ. سال در نتیجه ممکن است متفاوت از سال در بحث تاریخ برای اولین و هفته گذشته سال.
استدلال حالت کار می کند دقیقا مانند استدلال حالت به یدک کش (). برای نحو تک استدلال, ارزش حالت 0 استفاده شده است.
toISOYear()
یک تابع سازگاری است که معادل است intDiv(toYearWeek(date,3),100)
.
مثال
SELECT toDate('2016-12-27') AS date, toYearWeek(date) AS yearWeek0, toYearWeek(date,1) AS yearWeek1, toYearWeek(date,9) AS yearWeek9;
┌───────date─┬─yearWeek0─┬─yearWeek1─┬─yearWeek9─┐
│ 2016-12-27 │ 201652 │ 201652 │ 201701 │
└────────────┴───────────┴───────────┴───────────┘
حالا
قبول صفر استدلال و بازده زمان فعلی در یکی از لحظات اجرای درخواست. این تابع ثابت می گرداند, حتی اگر درخواست زمان طولانی برای تکمیل.
امروز
قبول صفر استدلال و بازده تاریخ جاری در یکی از لحظات اجرای درخواست. همان ‘toDate(now())’.
دیروز
قبول صفر استدلال و بازده تاریخ دیروز در یکی از لحظات اجرای درخواست. همان ‘today() - 1’.
سانس
دور زمان به نیم ساعت. این تابع خاص به یاندکس است.متریکا, از نیم ساعت حداقل مقدار زمان برای شکستن یک جلسه به دو جلسه است اگر یک تگ ردیابی نشان می دهد تعداد صفحات متوالی یک کاربر که در زمان به شدت بیش از این مقدار متفاوت. این به این معنی است که تاپل (شناسه برچسب, شناسه کاربری, و شکاف زمان) را می توان مورد استفاده قرار گیرد به جستجو برای تعداد صفحات که در جلسه مربوطه شامل.
ستاره فیلم سکسی
تبدیل یک تاریخ یا تاریخ با زمان به یک عدد اوینت32 حاوی تعداد سال و ماه (یی * 100 + میلی متر).
ستاره فیلم سکسی
تبدیل یک تاریخ یا تاریخ با زمان به تعداد اوینت32 حاوی سال و ماه شماره (یی * 10000 + میلی متر * 100 + دی.دی.
اطلاعات دقیق
تبدیل یک تاریخ و یا تاریخ با گذشت زمان به یک uint64 تعداد شامل سال و ماه شماره (yyyy * 10000000000 + mm * 100000000 + dd * 1000000 + hh * 10000 + mm * 100 + ss) است.
addYears, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addQuarters
تابع می افزاید: یک تاریخ/فاصله زمانی به یک تاریخ/تاریخ ساعت و سپس بازگشت تاریخ / تاریخ ساعت. به عنوان مثال:
WITH
toDate('2018-01-01') AS date,
toDateTime('2018-01-01 00:00:00') AS date_time
SELECT
addYears(date, 1) AS add_years_with_date,
addYears(date_time, 1) AS add_years_with_date_time
┌─add_years_with_date─┬─add_years_with_date_time─┐
│ 2019-01-01 │ 2019-01-01 00:00:00 │
└─────────────────────┴──────────────────────────┘
subtractYears, subtractMonths, subtractWeeks, subtractDays, subtractHours, subtractMinutes, subtractSeconds, subtractQuarters
تابع تفریق یک تاریخ/فاصله زمانی به تاریخ/تاریخ ساعت و سپس بازگشت تاریخ / تاریخ ساعت. به عنوان مثال:
WITH
toDate('2019-01-01') AS date,
toDateTime('2019-01-01 00:00:00') AS date_time
SELECT
subtractYears(date, 1) AS subtract_years_with_date,
subtractYears(date_time, 1) AS subtract_years_with_date_time
┌─subtract_years_with_date─┬─subtract_years_with_date_time─┐
│ 2018-01-01 │ 2018-01-01 00:00:00 │
└──────────────────────────┴───────────────────────────────┘
dateDiff
بازگرداندن تفاوت بین دو تاریخ و یا تاریخ ساعت ارزش.
نحو
dateDiff('unit', startdate, enddate, [timezone])
پارامترها
-
unit
— Time unit, in which the returned value is expressed. رشته.Supported values: | unit | | ---- | |second | |minute | |hour | |day | |week | |month | |quarter | |year |
-
startdate
— The first time value to compare. تاریخ یا DateTime. -
enddate
— The second time value to compare. تاریخ یا DateTime. -
timezone
— Optional parameter. If specified, it is applied to bothstartdate
وenddate
. اگر مشخص نشده, زمان ازstartdate
وenddate
استفاده می شود. در صورتی که یکسان نیست, نتیجه نامشخص است.
مقدار بازگشتی
تفاوت بین startdate
و enddate
بیان شده در unit
.
نوع: int
.
مثال
پرسوجو:
SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00'));
نتیجه:
┌─dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00'))─┐
│ 25 │
└────────────────────────────────────────────────────────────────────────────────────────┘
زمانهای(StartTime, مدت,[, اندازه])
برای یک بازه زمانی شروع در ‘StartTime’ و در ادامه برای ‘Duration’ ثانیه, این مجموعه ای از لحظات در زمان گرداند, متشکل از نقاط از این فاصله به گرد ‘Size’ در عرض چند ثانیه ‘Size’ یک پارامتر اختیاری است: یک ثابت اوینت32, مجموعه ای به 1800 به طور پیش فرض.
به عنوان مثال, timeSlots(toDateTime('2012-01-01 12:20:00'), 600) = [toDateTime('2012-01-01 12:00:00'), toDateTime('2012-01-01 12:30:00')]
.
این برای جستجوی صفحات در جلسه مربوطه ضروری است.
formatDateTime(زمان فرمت [منطقه زمانی])
Function formats a Time according given Format string. N.B.: Format is a constant expression, e.g. you can not have multiple formats for single result column.
اصلاح کننده های پشتیبانی شده برای فرمت:
(“Example” ستون نتیجه قالب بندی برای زمان را نشان می دهد 2018-01-02 22:33:44
)
تغییردهنده | توصیف | مثال |
---|---|---|
%C | سال تقسیم بر 100 و کوتاه به عدد صحیح (00-99) | 20 |
# د | روز از ماه, صفر خالی (01-31) | 02 |
%D | کوتاه میلی متر/دی دی/یی تاریخ, معادل %متر/%د / %و | 01/02/18 |
# ا | روز از ماه, فضا خالی ( 1-31) | 2 |
%F | کوتاه تاریخ یی-میلی متر-دی دی, معادل%و-%متر - % د | 2018-01-02 |
%H | ساعت در فرمت 24 ساعت (00-23) | 22 |
%I | ساعت در فرمت 12 ساعت (01-12) | 10 |
# ج | روز سال (001-366) | 002 |
% متر | ماه به عنوان یک عدد اعشاری (01-12) | 01 |
%M | دقیقه (00-59) | 33 |
% ن | شخصیت جدید خط (") | |
# پ | هستم یا بعد از ظهر تعیین | PM |
%R | 24-ساعت ساعت ساعت: زمان میلی متر, معادل %ساعت: % متر | 22:33 |
%S | دوم (00-59) | 44 |
% تی | شخصیت افقی تب (’) | |
%T | ایزو 8601 فرمت زمان (ساعت:میلی متر:اس اس), معادل %ساعت:%متر:%بازدید کنندگان | 22:33:44 |
# تو | ایزو 8601 روز هفته به عنوان شماره با دوشنبه به عنوان 1 (1-7) | 2 |
%V | ایزو 8601 هفته شماره (01-53) | 01 |
# وات | روز هفته به عنوان یک عدد اعشاری با یکشنبه به عنوان 0 (0-6) | 2 |
#… | سال گذشته دو رقم (00-99) | 18 |
%Y | سال | 2018 |
%% | یک % نشانه | % |