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.

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ı açı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 Açı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

Rating: 3 - 23 votes

Was this content helpful?
★★★☆☆