Kiedy wprowadzasz zapytanie w Edytorze SQL lub tworzysz kalkulację, używasz składni Presto SQL. Aby dostosować lub wykonać obliczenia na wartościach daty lub znacznika czasu, możesz uznać te typowe funkcje za przydatne.
Uwaga: Zmienne czasu wykonywania w łańcuchach, takie jak te używane do transformacji daty i czasu , używają Python strftime zamiast Presto SQL.
W STREFIE CZASOWEJ
Aby przekonwertować strefę czasową znacznika czasu, użyj operatora AT TIME ZONE. Na przykład:
SELECT cast(timestamp '2020-10-31 01:00 UTC' as VARCHAR) 2020-10-31 01:00:00.000 UTC SELECT cast(timestamp '2020-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles' as VARCHAR) 2020-10-30 18:00:00.000 America/Los_Angeles
Wskazówka: W większości obszarów możesz użyć America/Los_Angeles dla strefy czasowej Pacyfiku, America/Denver dla Mountain, America/Chicago dla Central i America/New_York dla Eastern.
CURRENT_DATE
Aby zwrócić datę uruchomienia zapytania, użyj funkcji CURRENT_DATE. Na przykład, SELECT CURRENT_DATE().
DATA
Aby przekonwertować wartość na wartość daty, użyj funkcji DATE jako DATE(value).
DATE_ADD
Aby dodać wartość jednostki interwału do daty lub znacznika czasu, użyj funkcji DATE_ADD jako DATE_ADD(jednostka, wartość, znacznik czasu). Dla jednostki , DATE_ADD obsługuje:
milisekundadrugiminutagodzinadzieńtydzieńmiesiąckwartałrok
Na przykład, SELECT DATE_ADD('day', 10, "2020-06-15") zwraca 2020-06-25.
Uwaga: Aby przeanalizować ciąg znaków w formacie IS08601 jako wartość daty, użyj funkcji FROM_ISO8601_DATE, takiej jak FROM_ISO8601_DATE('2020-06-15').
DATE_DIFF
Aby zwrócić różnicę dwóch wartości daty lub znacznika czasu, użyj funkcji DATE_DIFF jako DATE_DIFF(unit, timestamp1, timestamp 2). Dla jednostki , DATE_DIFF obsługuje te same wartości co DATE_ADD. Na przykład, SELECT DATE_DIFF('day', '2020-06-15', '2020-06-25') zwraca 10.
Zwróć uwagę, że DATE_DIFF ma zastosowanie tylko do obiektów Date i może być wymagane rzutowanie innych obiektów, aby ta funkcja działała.
Uwaga: Aby przeanalizować ciąg znaków w formacie IS08601 jako wartość daty, użyj funkcji FROM_ISO8601_DATE, takiej jak FROM_ISO8601_DATE('2020-06-15').
DATE_FORMAT
Aby zwrócić wartość daty lub znacznika czasu w ustalonym formacie, użyj funkcji DATE_FORMAT jako DATE_FORMAT(timestamp, format). W przypadku formatu , DATE_FORMAT obsługiwana jest kombinacja tych wartości:
| Format | Opis |
|---|---|
%a |
Skrócona nazwa dnia tygodnia, odSun do Sat |
%b |
Skrócona nazwa miesiąca, od Jan do Dec |
%c |
Numeryczna wartość miesiąca, od 1 do 12 |
%D
|
Numeric day of the month with its suffix, such as 1st,
2nd, 3rd...
|
%d |
Numeryczny dzień miesiąca jako liczba dwucyfrowa, od 01 do 31 |
%e |
Numeryczny dzień miesiąca, od 1 do 31 |
%f |
Milisekunda, od 000000 do 999000 do drukowania; od 0 do 999999999 do parsowania |
%H |
Godzina zegara 24-godzinnego jako liczba dwucyfrowa, od 00 do 23 |
%h lub %I |
Godzina zegara 12-godzinnego jako liczba dwucyfrowa, od 00 do 12 |
%i |
Minuta, od 00 do 59 |
%j |
Dzień roku jako trzycyfrowa liczba, od 000 do 366 |
%k |
Godzina zegara 24-godzinnego, od 0 do 23 |
%l |
Godzina zegara 12-godzinnego, od 0 do 12 |
%M |
Nazwa miesiąca, od Styczeń do Grudzień |
%m |
Numeryczna wartość miesiąca jako liczba dwucyfrowa, od 01 do 12 |
%p |
AM lub PM zegara 12-godzinnego |
%r |
Czas na zegarze 12-godzinnym, jako hh:mm:ss, a następnie AM lub PM |
%s lub %S |
Po drugie, od 00 do 59 |
%T |
Czas na zegarze 24-godzinnym, jako hh:mm:ss |
%U
|
Week of the year, from 00 to 53,
where Sunday is the first day of the week
|
%u
|
Week of the year, from 00 to 53,
where Monday is the first day of the week
|
%V
|
Week of the year, from 01 to 53,
where Sunday is the first day of the week; used with %X
|
%v |
Tydzień roku, od 01 do 53, gdzie poniedziałek jest pierwszym dniem tygodnia; używane z %x |
%W |
Nazwa dnia tygodnia, odNiedziela do Sobota |
%w
|
Day of the week, from 0 to 6,
where Sunday is the first day of the week
|
%X
|
Year for when Sunday is the first day of the week; used with %V
|
%x |
Rok, w którym poniedziałek jest pierwszym dniem tygodnia; używany z %v |
%Y |
Rok, jako liczba czterocyfrowa |
%y |
Rok, jako liczba dwucyfrowa Uwaga: Podczas parsowania, |
%% |
Dosłowny znak % |
Uwaga: Aby zwrócić dzień tygodnia jako liczbę, od 1 do 7, użyj funkcji DAY_OF_WEEK.
DZIEŃ
Aby zwrócić dzień miesiąca - jako liczbę od 1 do 31 - z daty lub znacznika czasu, użyj funkcji DAY jako DAY(date_value). Na przykład, SELECT DAY("2020-06-15") zwraca 15.
DAY_OF_WEEK
Aby zwrócić dzień tygodnia - jako liczbę od 1 dla poniedziałku do 7 dla niedzieli - z daty lub znacznika czasu, użyj funkcji DAY_OF_WEEK jako DAY_OF_WEEK(date_value).
EOMONTH
Aby zwrócić numer ostatniego dnia miesiąca z daty lub znacznika czasu, użyj funkcji EOMONTH, takiej jak EOMONTH(date_value, month_number_value).
FROM_ISO8601_DATE
Aby przeanalizować ciąg znaków w formacie ISO8601 jako datę, użyj funkcji FROM_ISO8601_DATE, takiej jak FROM_ISO8601_DATE(date_value).
INTERWAŁ
Aby dodać lub odjąć wartości jednostek interwału dla daty lub znacznika czasu, użyj funkcji INTERVAL z operatorem + lub -, takim jak +/- INTERVAL wartość jednostka. Dla unit, INTERVAL obsługuje te same wartości co DATE_ADD. Na przykład:
-
DATE '2020-08-08' + INTERVAL '2' dayzwraca 2020-08-10. -
TIMESTAMP '2020-08-08 01:00' + INTERVAL '29' godzinazwraca 2020-08-09 06:00:00.000. -
INTERVAL '2' day + INTERVAL '3' hourreturns 2 03:00:00.000. -
TIMESTAMP '2020-10-31 01:00' - INTERVAL '1' monthzwraca 2020-09-30 01:00:00.000.
MIESIĄC
Aby zwrócić miesiąc - jako liczbę od 1 do 12 - z daty lub znacznika czasu, użyj funkcji MONTH jako MONTH(date_value). Na przykład, SELECT MONTH("2020-06-15") zwraca 6.
TERAZ
Aby zwrócić znacznik czasu uruchomienia zapytania, użyj funkcji NOW. Na przykład, SELECT NOW().
KWARTAŁ
Aby zwrócić kwartał roku - jako liczbę od 1 do 4 - z daty lub znacznika czasu, użyj funkcji QUARTER jako QUARTER(date_value). Na przykład, SELECT QUARTER("2020-06-15") zwraca 2.
ROK
Aby zwrócić rok - jako liczbę od 1000 do 9990 - z daty lub znacznika czasu, użyj funkcji YEAR jako YEAR(date_value). Na przykład, SELECT YEAR("2020-06-15") zwraca 2020.