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:

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.

SyntaxDATE(expression)
UtdataDatum
DefinitionReturnerar 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 DATEPARSE behöver du inte ange något mönster, eftersom DATE automatiskt identifierar många standarddatumformat. Om DATE emellertid inte kan identifiera inmatningen kan du prova med DATEPARSE och ange formatet.

MAKEDATE är en annan liknande funktion, men MAKEDATE kräver inmatning av numeriska värden för år, månad och dag.

DATEADD

Lägger till ett specificerat antal datumdelar (månader, dagar osv.) till startdatumet.

SyntaxDATEADD(date_part, interval, date)
UtdataDatum
DefinitionReturnerar <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.

SyntaxDATEDIFF(date_part, date1, date2, [start_of_week])
UtdataHeltal
DefinitionReturnerar 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.

SyntaxDATENAME(date_part, date, [start_of_week])
UtdataSträng
DefinitionReturnerar <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. DATEPART kan vara snabbare eftersom det är en numerisk åtgärd.

Genom att ändra attributen för beräkningens resultat (dimension eller mätvärde, kontinuerligt eller diskret) och datumformateringen kan resultaten för DATEPART och DATENAME formateras så att de är identiska.

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.

SyntaxDATEPARSE(date_format, date_string)
UtdataDatum
DefinitionArgumentet <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!

DATE är en liknande funktion som automatiskt identifierar många standarddatumformat. DATEPARSE kan vara ett bättre alternativ om DATE inte kan identifiera inmatningsmönstret.

MAKEDATE är en annan liknande funktion, men MAKEDATE kräver inmatning av numeriska värden för år, månad och dag.

Omvända funktioner, som delar upp datum och returnerar värdet av deras delar, är DATEPART (heltalsutdata) och DATENAME (strängutdata).

Databasbegränsningar

DATEPARSE är tillgängligt via följande kopplingar: icke föråldrade versioner av Excel- och textfilskopplingar, Amazon EMR Hadoop Hive, Cloudera Hadoop, Google Kalkylark, Hortonworks Hadoop Hive, MapR Hadoop Hive, MySQL, Oracle, PostgreSQL och Tableau-extrakt. Vissa format kanske inte är tillgängliga för alla kopplingar.

DATEPARSE stöds inte av Hive-varianter. Endast Denodo, Drill och Snowflake stöds.

DATEPART

Returnerar namnet på det angivna datumet som ett heltal.

SyntaxDATEPART(date_part, date, [start_of_week])
UtdataHeltal
DefinitionReturnerar <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 DATENAME, som returnerar namnet på den angivna datumdelen som en diskret sträng. DATEPART kan vara snabbare eftersom det är en numerisk åtgärd. Genom att ändra attributen för fältet (dimension eller mätvärde, kontinuerligt eller diskret) och datumformateringen kan resultaten för DATEPART och DATENAME formateras så att de är identiska.

En omvänd funktion är DATEPARSE, som tar ett strängvärde och formaterar det som ett datum.

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.

SyntaxDATETRUNC(date_part, date, [start_of_week])
UtdataDatum
DefinitionTrunkerar <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 start_of_week in i bilden. ISO-veckor börjar alltid med måndag. För språkzonen för detta exempel innebär en ospecificerad start_of_week att veckan börjar med söndag.

Obs!

Stödjer ISO 8601-datum.

Använd inte DATETRUNC för att till exempel sluta visa tiden för ett datum- och tidsfält i en visualisering. Om du vill trunkera visningen av ett datum istället för att avrunda dess exakthet justerar du formateringen(Länken öppnas i ett nytt fönster).

Till exempel skulle DATETRUNC('day', #5/17/2022 3:12:48 PM#), om det formaterats till att visa sekunder i visualiseringen, visas som 5/17/2022 12:00:00 AM. Värdet är trunkerat till dag, men sekunder visas.

DAY

Returnerar dagen i månaden (1–31) som ett heltal.

SyntaxDAY(date)
UtdataHeltal
DefinitionReturnerar 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.

SyntaxISDATE(string)
UtdataBooleskt
DefinitionReturnerar 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

SyntaxISOQUARTER(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxISOWEEK(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxISOWEEKDAY(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxISOYEAR(date)
UtdataHeltal
DefinitionReturnerar å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

SyntaxMAKEDATE(year, month, day)
UtdataDatum
DefinitionReturnerar 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. MAKEDATE(2020,4,31) = May 1, 2020, i stället för att returnera ett fel om att den 31 april inte finns.

Tillgängligt för Tableau-dataextrakt. Kontrollera om det är tillgängligt i andra datakällor.

MAKEDATE kräver numeriska indata för datumdelarna. Om data är en sträng som ska vara ett datum kan du prova DATE-funktionen. DATE identifierar automatiskt många standarddatumformat. Om DATE inte kan identifiera indata kan du prova att använda DATEPARSE.

MAKEDATETIME

SyntaxMAKEDATETIME(date, time)
UtdataDatum/tid
DefinitionReturnerar 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 är en liknande funktion som är tillgänglig för Tableau-dataextrakt och vissa andra datakällor.

MAKETIME

SyntaxMAKETIME(hour, minute, second)
UtdataDatum/tid
DefinitionReturnerar 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 MAKEDATETIME, som endast är tillgänglig för MYSQL-kompatibla anslutningar.

MAX

SyntaxMAX(expression) eller MAX(expr1, expr2)
UtdataSamma 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.

MAX kan även tillämpas på ett enskilt fält som en aggregering.

Exempel
MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
Obs!

För strängar

MAX är vanligtvis det värde som kommer sist i alfabetisk ordning.

För datakällor i databaser är strängvärdet MAX det högsta i den sorteringssekvens som definierats i databasen för den kolumnen.

För datum

För datum är MAX det senaste datumet. Om MAX är en aggregering kommer resultatet inte att ha någon datumhierarki. Om MAX är en jämförelse kommer resultatet att behålla datumhierarkin.

Som en aggregering

MAX(expression) är en aggregerad funktion och returnerar ett enda aggregerat resultat. Detta visas som AGG(expression) i visualiseringen.

Som en jämförelse

MAX(expr1, expr2) jämför de två värdena och returnerar ett värde på radnivå.

Se även MIN.

MIN

SyntaxMIN(expression) eller MIN(expr1, expr2)
UtdataSamma 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.

MIN kan även tillämpas på ett enskilt fält som en aggregering.

Exempel
MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
Obs!

För strängar

MIN är vanligtvis det värde som kommer först i alfabetisk ordning.

För datakällor i databaser är strängvärdet MIN det lägsta i den sorteringssekvens som definierats i databasen för den kolumnen.

För datum

För datum är MIN det tidigaste datumet. Om MIN är en aggregering kommer resultatet inte att ha någon datumhierarki. Om MIN är en jämförelse kommer resultatet att behålla datumhierarkin.

Som en aggregering

MIN(expression) är en aggregerad funktion och returnerar ett enda aggregerat resultat. Detta visas som AGG(expression) i visualiseringen.

Som en jämförelse

MIN(expr1, expr2) jämför de två värdena och returnerar ett värde på radnivå.

Se även MAX.

MONTH

SyntaxMONTH(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxNOW()
UtdataDatum/tid
DefinitionReturnerar aktuellt datum och tid för det lokala systemet.
Exempel
NOW() = 1986-03-25 1:08:21 PM
Obs!

NOW tar inget argument.

Se även TODAY, en likartad beräkning som returnerar ett datum istället för datum och tid.

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

SyntaxQUARTER(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxTODAY()
UtdataDatum
DefinitionReturnerar aktuellt datum för det lokala systemet.
Exempel
TODAY() = 1986-03-25
Obs!

TODAY tar inget argument.

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

SyntaxWEEK(date)
UtdataHeltal
DefinitionReturnerar 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

SyntaxYEAR(date)
UtdataHeltal
DefinitionReturnerar å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_partVä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:

FormatDatatypVärde
”25 mars 1986”Sträng”25 mars 1986”
#3/25/1986#Datum#3/25/1986#
03/25/1986Flytande decimal0.00006042
1986-03-25Heltal1,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.

  1. I Tableau Desktop ansluter du till datakällan som sparats i Sample-Superstore, som medföljer Tableau.
  2. Öppna ett arbetsblad.
  3. I rutan Data, under Dimensioner, drar du Orderdatum till hyllan Rader.
  4. Klicka på plusikonen (+) i fältet ÅR(orderdatum) på hyllan Rader.

    KVARTAL(orderdatum) läggs till i hyllan Rader och vyn uppdateras.

  5. På hyllan Rader klickar du på plusikonen (+) i fältet KVARTAL(orderdatum) för att öka detaljnivån till MÅNAD(orderdatum).

  6. Välj Analys > Skapa beräknat fält.
  7. 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.

  8. 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å.
  9. Högerklicka på ÅR(orderdatum) på hyllan Rader och välj Exakt datum.
  10. Högerklicka på ÅR(orderdatum) på hyllan Rader igen och välj Diskret.

    Visualiseringen uppdateras med exakt kvartalsdatum för varje rad i tabellen.

Tack för din feedback!Din feedback har skickats in. Tack!