Datumfunktioner
Datum är ett vanligt inslag i många datakällor. Om ett fält innehåller igenkännbara datum har det en datatyp för datum eller datum och tid. När datumfält används i visualiseringen får de en speciell uppsättning funktioner, inklusive en automatisk utökad detaljnivå för datumhierarkier, datumspecifika filteralternativ och specialiserade datumformateringsalternativ. När du använder datum i beräkningar måste du ofta använda datumspecifika funktioner.
Bekanta dig med andra datumkoncept
Datumfunktioner refererar ibland till datumspecifika element, inklusive argumentet date_part
, den valfria parametern [start_of_week]
och datumliteraler (#). Dessa behandlas mer i detalj i slutet av det här ämnet.
Det finns flera andra ämnen som kan vara av intresse men som inte ingår i datumfunktioner:
- Formatera hur ett datum visas i en visualisering: Anpassade datumformat
- Ställa in standarddatumegenskaper: Datumegenskaper för en datakälla
- Arbeta med räkenskapsdatum: Räkenskapsdatum
- Använda ISO-8601-kalendern: ISO-8601-veckokalender
Tips: Har fältet redan identifierats som ett datum (det har en datumikon i rutan Data) och du vill styra hur det visas i visualiseringen? Du kan behöva formatera det i stället för att använda en datumfunktion. Anta till exempel att du vill visa 22Sept2024 som 09/24. Detta hanteras genom att datumet formateras, inte med hjälp av en beräkning.
Du kan läsa mer i Anpassade datumformat och relaterade avsnitt om datumfält. Med datumfunktionerna på den här sidan kan du manipulera beräknade datumfält, inte ange hur de formateras när de visas.
Datumfunktioner i Tableau
DATE
Typkonverteringsfunktion som ändrar stränguttryck och numeriska uttryck till datum, så länge de har ett igenkännbart format.
Syntax | DATE(expression) |
Utdata | Datum |
Definition | Returnerar ett datum givet ett nummer, en sträng eller ett <expression> för datum. |
Exempel | DATE([Employee Start Date]) DATE("September 22, 2018") DATE("9/22/2018") DATE(#2018-09-22 14:52#) |
Obs! | Till skillnad från
|
DATEADD
Lägger till ett specificerat antal datumdelar (månader, dagar osv.) till startdatumet.
Syntax | DATEADD(date_part, interval, date) |
Utdata | Datum |
Definition | Returnerar <date> med angivet <interval> för nummer som har lagts till angiven <date_part> för datumet. Till exempel läggs tre månader eller 12 dagar till i ett startdatum. |
Exempel | Förskjuta alla förfallodatum med en vecka DATEADD('week', 1, [due date]) Lägga till 280 dagar till datumet 20 februari 2021 DATEADD('day', 280, #2/20/21#) = #November 27, 2021# |
Obs! | Stödjer ISO 8601-datum. |
DATEDIFF
Returnerar antalet datumdelar (veckor, år osv.) mellan två datum.
Syntax | DATEDIFF(date_part, date1, date2, [start_of_week]) |
Utdata | Heltal |
Definition | Returnerar skillnaden mellan <date1> och <date2> uttryckt i enheter av <date_part> . Till exempel kan du subtrahera datumen då någon blev medlem i och gick ur ett band för att se hur länge de var med i bandet. |
Exempel | Antal dagar mellan 25 mars 1986 och 20 februari 2021 DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751 Hur många månader någon var i ett band DATEDIFF('month', [date joined band], [date left band]) |
Obs! | Stödjer ISO 8601-datum. |
DATENAME
Returnerar namnet på det angivna datumet som en diskret sträng.
Syntax | DATENAME(date_part, date, [start_of_week]) |
Utdata | Sträng |
Definition | Returnerar <date_part> av <date> som en sträng. |
Exempel | DATENAME('year', #3/25/1986#) = "1986" DATENAME('month', #1986-03-25#) = "March" |
Obs! | Stödjer ISO 8601-datum. En mycket likartad beräkning är DATEPART, som returnerar värdet för den angivna datumdelen som ett kontinuerligt heltal. Genom att ändra attributen för beräkningens resultat (dimension eller mätvärde, kontinuerligt eller diskret) och datumformateringen kan resultaten för En omvänd funktion är DATEPARSE, som tar ett strängvärde och formaterar det som ett datum. |
DATEPARSE
Returnerar specifikt formaterade strängar som datum.
Syntax | DATEPARSE(date_format, date_string) |
Utdata | Datum |
Definition | Argumentet <date_format> beskriver hur fältet <date_string> är ordnat. På grund av de många olika sätt som strängfält kan sorteras måste <date_format> matcha exakt. En fullständig förklaring och formateringsuppgifter finns i Konvertera ett fält till ett datumfält(Länken öppnas i ett nytt fönster). |
Exempel | DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986# |
Obs! |
Omvända funktioner, som delar upp datum och returnerar värdet av deras delar, är |
Databasbegränsningar |
|
DATEPART
Returnerar namnet på det angivna datumet som ett heltal.
Syntax | DATEPART(date_part, date, [start_of_week]) |
Utdata | Heltal |
Definition | Returnerar <date_part> av <date> som ett heltal. |
Exempel | DATEPART('year', #1986-03-25#) = 1986 DATEPART('month', #1986-03-25#) = 3 |
Obs! | Stödjer ISO 8601-datum. En mycket likartad beräkning är En omvänd funktion är |
DATETRUNC
Den här funktionen kan ses som datumavrundning. Den tar ett specifikt datum och returnerar en version av datumet med önskad specificitet. Eftersom varje datum måste ha ett värde för dag, månad, kvartal och år ställer DATETRUNC
in värdena som det lägsta värdet för varje datumdel fram till den angivna datumdelen. Se exemplet för mer information.
Syntax | DATETRUNC(date_part, date, [start_of_week]) |
Utdata | Datum |
Definition | Trunkerar <date> till den noggrannhet som anges av <date_part> . Den här funktionen returnerar ett nytt datum. När du till exempel trunkerar ett datum som är i mitten av månaden på månadsnivå returnerar den här funktionen den första dagen i månaden. |
Exempel | DATETRUNC('day', #9/22/2018#) = #9/22/2018# DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018# (måndagen i veckan som innehåller 9/22/2018) DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# (den första dagen i kvartalet som innehåller 9/22/2018) Obs! För vecka och ISO-vecka kommer |
Obs! | Stödjer ISO 8601-datum. Använd inte Till exempel skulle |
DAY
Returnerar dagen i månaden (1–31) som ett heltal.
Syntax | DAY(date) |
Utdata | Heltal |
Definition | Returnerar dagen för givet <date> som ett heltal. |
Exempel | Day(#September 22, 2018#) = 22 |
Obs! | Se även WEEK , MONTH , QUARTER , YEAR och ISO-motsvarigheterna. |
ISDATE
Kontrollerar om strängen är ett giltigt datumformat.
Syntax | ISDATE(string) |
Utdata | Booleskt |
Definition | Returnerar sant om en given <string> är ett giltigt datum. |
Exempel | ISDATE(09/22/2018) = true ISDATE(22SEP18) = false |
Obs! | Det obligatoriska argumentet måste vara en sträng. ISDATE kan inte användas för ett fält med en datumdatatyp – beräkningen returnerar ett fel. |
ISOQUARTER
Syntax | ISOQUARTER(date) |
Utdata | Heltal |
Definition | Returnerar kvartalet enligt ISO8601-veckokalendern för ett givet <date> som ett heltal. |
Exempel | ISOQUARTER(#1986-03-25#) = 1 |
Obs! | Se även ISOWEEK , ISOWEEKDAY , ISOYEAR och icke-ISO-motsvarigheterna. |
ISOWEEK
Syntax | ISOWEEK(date) |
Utdata | Heltal |
Definition | Returnerar veckan enligt ISO8601-veckokalendern för ett givet <date> som ett heltal. |
Exempel | ISOWEEK(#1986-03-25#) = 13 |
Obs! | Se även ISOWEEKDAY , ISOQUARTER , ISOYEAR och icke-ISO-motsvarigheterna. |
ISOWEEKDAY
Syntax | ISOWEEKDAY(date) |
Utdata | Heltal |
Definition | Returnerar veckodagen enligt ISO8601-veckokalendern för ett givet <date> som ett heltal. |
Exempel | ISOWEEKDAY(#1986-03-25#) = 2 |
Obs! | Se även ISOWEEK , ISOQUARTER , ISOYEAR och icke-ISO-motsvarigheterna. |
ISOYEAR
Syntax | ISOYEAR(date) |
Utdata | Heltal |
Definition | Returnerar året enligt ISO8601-veckokalendern för ett givet <date> som ett heltal. |
Exempel | ISOYEAR(#1986-03-25#) = 1,986 |
Obs! | Se även ISOWEEK , ISOWEEKDAY , ISOQUARTER och icke-ISO-motsvarigheterna. |
MAKEDATE
Syntax | MAKEDATE(year, month, day) |
Utdata | Datum |
Definition | Returnerar ett datumvärde utifrån angiven <year> , <month> och <day> . |
Exempel | MAKEDATE(1986,3,25) = #1986-03-25# |
Obs! | Obs! Felaktigt inmatade värden justeras till ett datum, t.ex. Tillgängligt för Tableau-dataextrakt. Kontrollera om det är tillgängligt i andra datakällor.
|
MAKEDATETIME
Syntax | MAKEDATETIME(date, time) |
Utdata | Datum/tid |
Definition | Returnerar datum och tid där ett <date> och en <time> kombineras. Datumet kan vara ett datum, datum/tid eller en sträng. Tidpunkten måste vara datum/tid. |
Exempel | MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM# |
Obs! | Den här funktionen finns endast tillgänglig för MySQL-kompatibla anslutningar (för Tableau är dessa MySQL och Amazon Aurora).
|
MAKETIME
Syntax | MAKETIME(hour, minute, second) |
Utdata | Datum/tid |
Definition | Returnerar ett datumvärde utifrån angiven <hour> , <minute> och <second> . |
Exempel | MAKETIME(14, 52, 40) = #1/1/1899 14:52:40# |
Obs! | Eftersom Tableau inte stöder en tidsdatatyp, endast datum och tid, är utdatan datum och tid. Fältets datumdel kommer att vara 1/1/1899. Liknande funktion som |
MAX
Syntax | MAX(expression) eller MAX(expr1, expr2) |
Utdata | Samma datatyp som argumentet, eller NULL om någon del av argumentet är null. |
Definition | Returnerar det största värdet för de två argumenten, som måste vara av samma datatyp.
|
Exempel | MAX(4,7) = 7 |
Obs! | För strängar
För datakällor i databaser är strängvärdet För datum För datum är Som en aggregering
Som en jämförelse
Se även |
MIN
Syntax | MIN(expression) eller MIN(expr1, expr2) |
Utdata | Samma datatyp som argumentet, eller NULL om någon del av argumentet är null. |
Definition | Returnerar det minsta värdet för de två argumenten, som måste vara av samma datatyp.
|
Exempel | MIN(4,7) = 4 |
Obs! | För strängar
För datakällor i databaser är strängvärdet För datum För datum är Som en aggregering
Som en jämförelse
Se även |
MONTH
Syntax | MONTH(date) |
Utdata | Heltal |
Definition | Returnerar månaden för givet <date> som ett heltal. |
Exempel | MONTH(#1986-03-25#) = 3 |
Obs! | Se även DAY , WEEK , QUARTER , YEAR och ISO-motsvarigheterna |
NOW
Syntax | NOW() |
Utdata | Datum/tid |
Definition | Returnerar aktuellt datum och tid för det lokala systemet. |
Exempel | NOW() = 1986-03-25 1:08:21 PM |
Obs! |
Se även Om datakällan är en liveanslutning kan systemets datum och tid vara i en annan tidszon. Mer information om hur du hanterar detta finns i Kunskapsbasen. |
QUARTER
Syntax | QUARTER(date) |
Utdata | Heltal |
Definition | Returnerar kvartalet för givet <date> som ett heltal. |
Exempel | QUARTER(#1986-03-25#) = 1 |
Obs! | Se även DAY , WEEK , MONTH , YEAR och ISO-motsvarigheterna |
TODAY
Syntax | TODAY() |
Utdata | Datum |
Definition | Returnerar aktuellt datum för det lokala systemet. |
Exempel | TODAY() = 1986-03-25 |
Obs! |
Se även NOW, en likartad beräkning som returnerar datum och tid istället för ett datum. Om datakällan är en liveanslutning kan systemdatumet vara i en annan tidszon. Mer information om hur du hanterar detta finns i Kunskapsbasen. |
WEEK
Syntax | WEEK(date) |
Utdata | Heltal |
Definition | Returnerar veckan för givet <date> som ett heltal. |
Exempel | WEEK(#1986-03-25#) = 13 |
Obs! | Se även DAY , MONTH , QUARTER , YEAR och ISO-motsvarigheterna |
YEAR
Syntax | YEAR(date) |
Utdata | Heltal |
Definition | Returnerar året för givet <date> som ett heltal. |
Exempel | YEAR(#1986-03-25#) = 1,986 |
Obs! | Se även DAY , WEEK , MONTH , QUARTER och ISO-motsvarigheterna |
date_part
Många datumfunktioner i Tableau tar argumentet date_part
, som är en strängkonstant som talar om för funktionen vilken del av ett datum som ska beaktas, till exempel dag, vecka eller kvartal. Du kan använda följande giltiga värden för date_part
:
date_part | Värden |
---|---|
'year' | År med fyra siffror |
'quarter' | 1–4 |
'month' | 1–12 eller ”januari”, ”februari” och så vidare |
'dayofyear' | Dag på året: 1:a jan. är 1, 1:a feb. är 32 och så vidare |
'day' | 1–31 |
'weekday' | 1–7 eller ”söndag”, ”måndag” och så vidare |
'week' | 1–52 |
'hour' | 0–23 |
'minute' | 0–59 |
'second' | 0–60 |
'iso-year' | Fyrsiffrigt ISO 8601-år |
'iso-quarter' | 1–4 |
'iso-week' | 1–52, veckan börjar alltid på en måndag |
'iso-weekday' | 1–7, veckan börjar alltid på en måndag |
Parametern [start_of_week]
Vissa funktioner har den valfria parametern [start_of_week]
. Parametern start_of_week
kan användas för att ange vilken dag som anses vara den första dagen i veckan, till exempel ”söndag” eller ”måndag”. Om detta utelämnas fastställs veckans början av datakällan. Se Datumegenskaper för en datakälla.
För exemplen nedan är 22 september en söndag och 24 september en tisdag. DATEDIFF-funktionen används för att beräkna veckorna mellan dessa datum.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1
- Eftersom start_of_week är ”måndag” är dessa datum i olika veckor.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0
- Eftersom start_of_week är ”söndag” är dessa datum i samma vecka.
Datumliteralen (#)
Exempel använder ofta nummertecknet (#) med datumuttryck. Detta är datumliteralen, som påminner om att använda citattecken för textsträngar och som talar om för Tableau att värdet innanför symbolerna är ett datum.
Utan datumliteralerna kan datum tolkas som andra datatyper. Exempel:
Format | Datatyp | Värde |
”25 mars 1986” | Sträng | ”25 mars 1986” |
#3/25/1986# | Datum | #3/25/1986# |
03/25/1986 | Flytande decimal | 0.00006042 |
1986-03-25 | Heltal | 1,958 |
25 mars 1986 | ogiltigt |
Mer information finns i Syntax för litterala uttryck
Skapa en datumberäkning
Öva på att skapa en datumberäkning med hjälp av exempeldatakällan i Superstore.
- I Tableau Desktop ansluter du till datakällan som sparats i Sample-Superstore, som medföljer Tableau.
- Öppna ett arbetsblad.
- I rutan Data, under Dimensioner, drar du Orderdatum till hyllan Rader.
- Klicka på plusikonen (+) i fältet ÅR(orderdatum) på hyllan Rader.
KVARTAL(orderdatum) läggs till i hyllan Rader och vyn uppdateras.
- På hyllan Rader klickar du på plusikonen (+) i fältet KVARTAL(orderdatum) för att öka detaljnivån till MÅNAD(orderdatum).
- Välj Analys > Skapa beräknat fält.
- Gör följande i den beräkningsredigerare som visas:
- Ge beräknade fältet namnet Kvartalsdatum.
- Ange följande formel:
DATETRUNC('quarter', [Order Date])
- Klicka på OK när du är klar.
Det nya beräknade datumfältet visas under Dimensioner i rutan Data. Precis som med de andra fälten kan du använda detta i en eller flera visualiseringar.
- Från rutan Data, under Dimensioner, drar du Kvartalsdatum till hyllanRader och placerar det till höger om MÅNAD(orderdatum). Visualiseringen uppdateras med årsvärden. Detta beror på att Tableau lyfter upp datumdata till högsta detaljnivå.
- Högerklicka på ÅR(orderdatum) på hyllan Rader och välj Exakt datum.
- Högerklicka på ÅR(orderdatum) på hyllan Rader igen och välj Diskret.
Visualiseringen uppdateras med exakt kvartalsdatum för varje rad i tabellen.