ClickHouse/docs/tr/sql-reference/functions/date-time-functions.md
2020-10-13 20:23:29 +03:00

19 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 39 Tarih ve Saatlerle çalışma

Tarih ve Saatlerle çalışmak için işlevler

Saat dilimleri için destek

Saat dilimi için mantıksal kullanımı olan tarih ve Saat ile çalışmak için tüm işlevler, ikinci bir isteğe bağlı saat dilimi bağımsız değişkeni kabul edebilir. Örnek: Asya / Yekaterinburg. Bu durumda, yerel (varsayılan) yerine belirtilen saat dilimini kullanırlar.

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 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘

UTC'DEN saat sayısına göre farklı olan yalnızca saat dilimleri desteklenir.

toTimeZone

Saat veya tarih ve saati belirtilen saat dilimine dönüştürün.

toYear

Bir tarihi veya tarihi zamanla yıl numarasını (AD) içeren bir Uınt16 numarasına dönüştürür.

toQuarter

Bir tarihi veya tarihi zaman ile çeyrek sayısını içeren bir Uİnt8 numarasına dönüştürür.

toMonth

Bir tarih veya tarih ile saati, ay numarasını (1-12) içeren bir Uİnt8 numarasına dönüştürür.

bugünyıl

Bir tarih veya tarih ile saat, yılın gün sayısını (1-366) içeren bir Uınt16 numarasına dönüştürür.

bugünay

Bir tarih veya tarih ile saat, Ayın gün sayısını (1-31) içeren bir Uınt8 numarasına dönüştürür.

bugünhafta

Bir tarih veya tarih ile saat, haftanın gününün sayısını içeren bir Uınt8 numarasına dönüştürür (Pazartesi 1 ve pazar 7'dir).

toHour

Saatli bir tarihi, 24 saatlik süre (0-23) saat sayısını içeren bir Uınt8 numarasına dönüştürür. 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).

toMinute

Saatli bir tarihi, saatin dakika sayısını (0-59) içeren bir Uınt8 numarasına dönüştürür.

toSecond

Dakika (0-59) ikinci sayısını içeren bir uınt8 numarasına zaman ile bir tarih dönüştürür. Sıçrama saniye hesaba değildir.

toUnixTimestamp

DateTime argümanı için: değeri dahili sayısal gösterimine dönüştürür (Unıx Zaman Damgası). String argümanı için: datetime'ı dizeden saat dilimine göre ayrıştırın (isteğe bağlı ikinci argüman, sunucu zaman dilimi varsayılan olarak kullanılır) ve karşılık gelen unıx zaman damgasını döndürür. Tarih argümanı için: davranış belirtilmemiş.

Sözdizimi

toUnixTimestamp(datetime)
toUnixTimestamp(str, [timezone])

Döndürülen değer

  • Unix zaman damgasını döndürür.

Tür: UInt32.

Örnek

Sorgu:

SELECT toUnixTimestamp('2017-11-05 08:07:47', 'Asia/Tokyo') AS unix_timestamp

Sonuç:

┌─unix_timestamp─┐
│     1509836867 │
└────────────────┘

toStartOfYear

Yılın ilk gününe kadar bir tarih veya tarih aşağı yuvarlar. Tarihi döndürür.

toStartOfİSOYear

ISO yılın ilk gününe kadar bir tarih veya tarih aşağı yuvarlar. Tarihi döndürür.

toStartOfQuarter

Çeyrek ilk güne kadar bir tarih veya tarih aşağı yuvarlar. Çeyreğin ilk günü 1 Ocak, 1 Nisan, 1 Temmuz veya 1 ekim'dir. Tarihi döndürür.

toStartOfMonth

Ayın ilk gününe kadar bir tarih veya tarih aşağı yuvarlar. Tarihi döndürür.

!!! attention "Dikkat" Yanlış tarihleri ayrıştırma davranışı uygulamaya özeldir. ClickHouse sıfır tarihi döndürebilir, bir istisna atabilir veya yapabilir “natural” taşmak.

toMonday

En yakın Pazartesi günü bir tarih veya tarih aşağı yuvarlar. Tarihi döndürür.

toStartOfWeek(t [, mod])

Modu ile en yakın pazar veya Pazartesi zaman bir tarih veya tarih aşağı yuvarlar. Tarihi döndürür. Mod bağımsız değişkeni, toWeek () için mod bağımsız değişkeni gibi çalışır. Tek bağımsız değişken sözdizimi için 0 mod değeri kullanılır.

toStartOfDay

Günün başlangıcına kadar bir tarih aşağı yuvarlar.

toStartOfHour

Saat başlangıcına kadar bir tarih aşağı yuvarlar.

toStartOfMinute

Dakikanın başlangıcına kadar bir tarih aşağı yuvarlar.

toStartOfFiveMinute

Beş dakikalık aralığın başlangıcına kadar bir tarih aşağı yuvarlar.

toStartOfTenMinutes

On dakikalık aralığın başlangıcına kadar bir tarih aşağı yuvarlar.

toStartOfFifteenMinutes

On beş dakikalık aralığın başlangıcına kadar tarih aşağı yuvarlar.

toStartOfİnterval (time_or_data, Aralık x birimi [, time_zone])

Bu, diğer işlevlerin bir genellemesidir toStartOf*. Mesela, toStartOfInterval(t, INTERVAL 1 year) aynı döndürür toStartOfYear(t), toStartOfInterval(t, INTERVAL 1 month) aynı döndürür toStartOfMonth(t), toStartOfInterval(t, INTERVAL 1 day) aynı döndürür toStartOfDay(t), toStartOfInterval(t, INTERVAL 15 minute) aynı döndürür toStartOfFifteenMinutes(t) vb.

toTime

Belirli bir sabit tarihe zaman ile bir tarih dönüştürür, zaman korurken.

toRelativeYearNum

Geçmişte belirli bir sabit noktadan başlayarak, yıl sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeQuarterNum

Geçmişte belirli bir sabit noktadan başlayarak, çeyrek sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeMonthNum

Geçmişte belirli bir sabit noktadan başlayarak, Ayın sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeWeekNum

Geçmişte belirli bir sabit noktadan başlayarak, haftanın sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeDayNum

Geçmişte belirli bir sabit noktadan başlayarak, günün sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeHourNum

Geçmişte belirli bir sabit noktadan başlayarak, saat veya tarih ile bir tarih saat sayısına dönüştürür.

toRelativeMinuteNum

Geçmişte belirli bir sabit noktadan başlayarak, dakika sayısına saat veya tarih ile bir tarih dönüştürür.

toRelativeSecondNum

Geçmişte belirli bir sabit noktadan başlayarak, ikinci sayısına saat veya tarih ile bir tarih dönüştürür.

toİSOYear

ISO yıl numarasını içeren bir uınt16 numarasına bir tarih veya tarih zaman dönüştürür.

toİSOWeek

ISO hafta numarasını içeren bir uınt8 numarasına bir tarih veya tarih zaman dönüştürür.

toWeek (tarih [, mod])

Bu işlev, date veya datetime için hafta numarasını döndürür. ToWeek () ' in iki bağımsız değişkenli formu, haftanın pazar veya Pazartesi günü başlayıp başlamadığını ve dönüş değerinin 0 ile 53 arasında mı yoksa 1 ile 53 arasında mı olması gerektiğini belirlemenizi sağlar. Mod bağımsız değişkeni atlanırsa, varsayılan mod 0'dır. toISOWeek()eşdeğer bir uyumluluk işlevidir toWeek(date,3). Aşağıdaki tabloda mod bağımsız değişkeni nasıl çalıştığınııklar.

Modu Haftanın ilk günü Aralık Week 1 is the first week …
0 Pazar 0-53 bu yıl bir pazar günü ile
1 Pazartesi 0-53 bu yıl 4 veya daha fazla gün ile
2 Pazar 1-53 bu yıl bir pazar günü ile
3 Pazartesi 1-53 bu yıl 4 veya daha fazla gün ile
4 Pazar 0-53 bu yıl 4 veya daha fazla gün ile
5 Pazartesi 0-53 bu yıl bir Pazartesi ile
6 Pazar 1-53 bu yıl 4 veya daha fazla gün ile
7 Pazartesi 1-53 bu yıl bir Pazartesi ile
8 Pazar 1-53 1 Ocak içerir
9 Pazartesi 1-53 1 Ocak içerir

Bir anlamı olan mod değerleri için “with 4 or more days this year,” haftalar ISO 8601: 1988'e göre numaralandırılmıştır:

  • 1 Ocak içeren haftanın yeni yılda 4 veya daha fazla günü varsa, 1. haftadır.

  • Aksi takdirde, bir önceki yılın son haftasıdır ve bir sonraki hafta 1. haftadır.

Bir anlamı olan mod değerleri için “contains January 1”, 1 Ocak haftanın 1.haft .asıdır. Haftanın yeni yılda kaç gün içerdiği önemli değil, sadece bir gün içerse bile.

toWeek(date, [, mode][, Timezone])

Parametre

  • 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.

Örnek

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 │
└────────────┴───────┴───────┴───────┘

toYearWeek (tarih [, mod])

Bir tarih için yıl ve hafta döndürür. Sonuçtaki yıl, yılın ilk ve son haftası için tarih argümanındaki yıldan farklı olabilir.

Mod bağımsız değişkeni, toWeek () için mod bağımsız değişkeni gibi çalışır. Tek bağımsız değişken sözdizimi için 0 mod değeri kullanılır.

toISOYear()eşdeğer bir uyumluluk işlevidir intDiv(toYearWeek(date,3),100).

Örnek

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 │
└────────────┴───────────┴───────────┴───────────┘

şimdi

Sıfır bağımsız değişkeni kabul eder ve geçerli saati istek yürütme anlarından birinde döndürür. Bu işlev, isteğin tamamlanması uzun zaman alsa bile bir sabit döndürür.

bugünkü

Sıfır bağımsız değişkeni kabul eder ve geçerli tarihi, istek yürütme anlarından birinde döndürür. Olarak aynı toDate(now()).

dün

Sıfır bağımsız değişkeni kabul eder ve istek yürütme anlarından birinde dünün tarihini döndürür. Olarak aynı today() - 1.

zaman dilimi

Yarım saat için zaman yuvarlar. Bu fonksiyon (kayıt olmak için özeldir.Metrica, yarım saat, bir izleme etiketi, tek bir kullanıcının ardışık sayfa görüntülemelerini, zaman içinde bu miktardan kesinlikle daha fazla farklılık gösteriyorsa, bir oturumu iki oturuma bölmek için minimum zaman miktarıdır. Bu, ilgili oturumda bulunan sayfa görüntülemelerini aramak için tuples (etiket kimliği, kullanıcı kimliği ve zaman dilimi) kullanılabileceği anlamına gelir.

toYYYYMM

Bir tarih veya tarih ile saat, yıl ve ay numarasını (YYYY * 100 + MM) içeren bir Uınt32 numarasına dönüştürür.

toYYYYMMDD

Bir tarih veya tarih ile saat, yıl ve ay numarasını içeren bir Uınt32 numarasına dönüştürür (YYYY * 10000 + MM * 100 + DD).

toYYYYMMDDhhmmss

Bir tarihi veya tarihi, yıl ve ay numarasını içeren bir Uınt64 numarasına dönüştürür (YYYY * 1000000 + MM * 1000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss).

addYears, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addQuarters

İşlev, bir tarih/DateTime aralığına bir tarih/DateTime ekler ve ardından Tarih/Datetime'ı döndürür. Mesela:

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

Fonksiyon bir tarih/DateTime aralığını bir tarih/DateTime olarak çıkarır ve ardından Tarih/Datetime'ı döndürür. Mesela:

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

İki Date veya DateTime değerleri arasındaki farkı döndürür.

Sözdizimi

dateDiff('unit', startdate, enddate, [timezone])

Parametre

  • unit — Time unit, in which the returned value is expressed. Dize.

    Supported values:
    
    | unit   |
    | ---- |
    |second  |
    |minute  |
    |hour    |
    |day     |
    |week    |
    |month   |
    |quarter |
    |year    |
    
  • startdate — The first time value to compare. Tarihli veya DateTime.

  • enddate — The second time value to compare. Tarihli veya DateTime.

  • timezone — Optional parameter. If specified, it is applied to both startdate ve enddate. Belirtilmemişse, saat dilimleri startdate ve enddate kullanılır. Aynı değilse, sonuç belirtilmemiştir.

Döndürülen değer

Arasındaki fark startdate ve enddate ifade edilen unit.

Tür: int.

Örnek

Sorgu:

SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00'));

Sonuç:

┌─dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00'))─┐
│                                                                                     25 │
└────────────────────────────────────────────────────────────────────────────────────────┘

(StartTime, Süresi,[, Boyutu zaman yuvasının])

Başlayan bir zaman aralığı için StartTime ve devam etmek için Duration saniye, bu aralıktan aşağı yuvarlanan noktalardan oluşan zaman içinde bir dizi moment döndürür Size saniyeler içinde. Size isteğe bağlı bir parametredir: varsayılan olarak 1800 olarak ayarlanmış bir sabit Uİnt32. Mesela, timeSlots(toDateTime('2012-01-01 12:20:00'), 600) = [toDateTime('2012-01-01 12:00:00'), toDateTime('2012-01-01 12:30:00')]. Bu, ilgili oturumda sayfa görüntülemelerini aramak için gereklidir.

formatDateTime (saat, Biçim [, Saat Dilimi])

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.

Biçim için desteklenen değiştiriciler: (“Example” sütun, zaman için biçimlendirme sonucunu gösterir 2018-01-02 22:33:44)

Değiştirici ıklama Örnek
%C yıl 100'e bölünür ve tamsayıya kesilir (00-99) 20
%d Ayın günü, sıfır yastıklı (01-31) 02
%D Kısa MM/DD/YY tarih, eşdeğer %m / %d / % y 01/02/18
%e Ayın günü, boşluk dolgulu (1-31) 2
%F kısa YYYY-AA-DD tarih, eşdeğer %Y-%m - %d 2018-01-02
%H 24 saat formatında saat (00-23) 22
%I 12h formatında saat (01-12) 10
%j yılın günü (001-366) 002
%metre ondalık sayı olarak ay (01-12) 01
%M dakika (00-59) 33
%ve new-line char (ac (ter (")
%p AM veya PM atama PM
%R 24-hour HH: MM Zaman, eşdeğer %H:%M 22:33
%S ikinci (00-59) 44
%t yatay-sekme karakteri (')
%T ISO 8601 saat biçimi (HH:MM:SS), eşdeğer %H:%M: % S 22:33:44
%u ISO 8601 hafta içi sayı olarak Pazartesi olarak 1 (1-7) 2
%V ISO 8601 hafta numarası (01-53) 01
%g Pazar günü 0 (0-6) olarak ondalık sayı olarak hafta içi) 2
%y Yıl, son iki basamak (00-99) 18
%Y Yıllık 2018
%% im %

Orijinal makale