Datetime-mönster

Det finns flera vanliga scenarier för datetime-användning i Spark:

  • CSV-och JSON-datakällor använder mönster strängen för parsning och formatering av datetime-innehåll.
  • Datetime-funktioner relaterade till konvertera StringType till och från DateType eller TimestampType . Till exempel,,,,,, unix_timestamp date_format to_unix_timestamp from_unixtime to_date to_timestamp from_utc_timestamp to_utc_timestamp .

Spark använder mönster bokstäver i följande tabell för datum-och tidsstämpel-parsning och formatering:

Symbol Innebörd Presentation Exempel
Projektredovisnings forsknings text ANNONS Anno Kristus
Ja år år 2020; tjugo
Styr dag – år tal (3) 189
M/L månad – år månad 3,7 07 Jul Månad
d dag i månaden tal (3) 28
Q/q kvartal – år tal/text 3 03 Q3 tredje kvartalet
Ö dag i veckan text Tis Torsdag
B justerad veckodag i månad tal (1) 3
en FM-EM FM-EM PM
h klockning – timme – EM – EM (1-12) tal (2) 12
K timme – fm-em (0-11) tal (2) 0
KB klock slag – timme – dag (1-24) tal (2) 0
& timme – dag (0-23) tal (2) 0
m minut-i-timma tal (2) 30
s Second-of-minut tal (2) 55
S bråk delar i sekund fraction 978
Lodrät tidszons-ID zon-ID America/Los_Angeles; Z – 08:30
z namn på tidszon zon-namn Pacific, normal tid; PST
A lokaliserad zon-förskjutning förskjutning-O GMT + 8; GMT + 08:00; UTC-08:00;
Röntgen zon-förskjutning av "Z" för noll Förskjutning-X Z 08 -0830; -08:30; -083015; -08:30:15;
x zon-förskjutning förskjutning-x + 0000; 08 -0830; -08:30; -083015; -08:30:15;
Z zon-förskjutning förskjutning-ö + 0000; -0800; -08:00;
Escape för text avgränsare
‘’ enkelt citat tecken strängen
[ valfri avsnitts start
] valfritt avsnitts slut

Antalet mönster bokstäver bestämmer formatet.

  • Text: text formatet bestäms baserat på antalet mönster bokstäver som används. Mindre än 4 mönster brev kommer att använda det korta text formuläret, vanligt vis en förkortning, t. ex. veckodag. Exakt 4 mönster brev kommer att använda hela text formuläret, vanligt vis den fullständiga beskrivningen, t. ex. vecko veckan kan resultera i "måndag". 5 eller flera bokstäver fungerar inte.

  • Tal (n): n här motsvarar det högsta antalet bokstäver som den här typen av datetime-mönster kan användas. Om antalet bokstäver är ett, matas värdet ut med det minsta antalet siffror och utan utfyllnad. Annars används antalet siffror som bredd för fältet utdata med värdet noll-utfyllnad vid behov.

  • Tal/text: om antalet mönster bokstäver är 3 eller högre, använder du text reglerna ovan. Använd annars nummer reglerna ovan.

  • Bråk: Använd ett eller flera (upp till 9) sammanhängande 'S' tecken, till exempel, för SSSSSS att parsa och formatera bråk delar av andra. För parsning kan den godkända bråk längden vara [1, antalet sammanhängande ']. För formatering skulle bråk längden vara utfyllnad till antalet sammanhängande ' med nollor. Spark stöder en datetime på mikro-till-sekund-precision, som har upp till 6 signifikanta siffror, men kan parsa nano-av-sekund som har överskridit detrunkering.

  • År: antalet bokstäver avgör den minsta fält bredden under vilken utfyllnad används. Om antalet bokstäver är två används en reducerad siffer form. Vid utskrift ger detta ut två siffror längst till höger. Vid parsning kommer detta att tolkas med bas värdet 2000, vilket resulterar i ett år inom intervallet 2000 till 2099. Om antalet bokstäver är mindre än fyra (men inte två), matas tecknet bara ut för negativa år. Annars visas tecknet om pad-bredden överskrids när G inte finns. 7 eller fler bokstäver fungerar inte.

  • Månad: den följer regeln för tal/text. Text formuläret är beroende av bokstäver – 'M' anger "standard"-formuläret och 'L' är för "fristående" form. Dessa två formulär är bara andra på vissa språk. I Ryssland är till exempel "ИЮЛЬ" den fristående formen juli och "Июля" är standard formuläret. Här följer några exempel på mönster som stöds:

    • 'M' eller 'L' : månads nummer under ett år från 1. Det finns ingen skillnad mellan 'M' och 'L' . Månad från 1 till 9 skrivs ut utan utfyllnad.

      select date_format(date '1970-01-01', "M");
      1
      select date_format(date '1970-12-01', "L");
      12
      
    • 'MM' eller 'LL' : månads nummer under ett år från 1. Utfyllnad för noll har lagts till i månaden 1-9.

      select date_format(date '1970-1-01', "LL");
      01
      select date_format(date '1970-09-01', "MM");
      09
      
    • 'MMM': Kort text representation i standard formuläret. Månads mönstret ska vara en del av ett datum mönster som inte bara är en fristående månad förutom de nationella inställningar där det inte finns någon skillnad mellan fristående och fristående formulär som på engelska.

      select date_format(date '1970-01-01', "d MMM");
      1 Jan
      select to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'dd MMM', 'locale', 'RU'));
      01 янв.
      
    • 'LLL': Kort text representation i det fristående formuläret. Den ska endast användas för att formatera/parsa månader utan andra datum fält.

      select date_format(date '1970-01-01', "LLL");
      
      Jan
      
      select to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'LLL', 'locale', 'RU'));
      
      янв.
      
    • 'MMMM': full text månads representation i standard formuläret. Den används för parsning eller formatering av månader som en del av datum/tidsstämpel.

      select date_format(date '1970-01-01', "d MMMM");
      
      1 January
      
      select to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'd MMMM', 'locale', 'RU'));
      
      1 января
      
    • 'LLLL': full text månads representation i det fristående formuläret. Mönstret kan endast användas för att formatera/parsa månader.

      select date_format(date '1970-01-01', "LLLL");
      
      January
      
      select to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'LLLL', 'locale', 'RU'));
      
      январь
      
  • fm-em: då matas den här dagen in i dag. Antalet mönster bokstäver måste vara 1.

  • Zon-ID (V): den här informationen visar tids zons-ID: t. Antalet mönster bokstäver måste vara 2.

  • Zon namn (z): det här visar visnings text namnet för Time-Zone-ID. Om antalet bokstäver är ett, två eller tre, kommer det korta namnet att matas ut. Om antalet bokstäver är fyra, kommer det fullständiga namnet att matas ut. Det går inte att utföra fem eller fler bokstäver.

  • Offset X och X: detta formaterar förskjutningen baserat på antalet mönster bokstäver. En bokstav utvärderar bara timmen, till exempel "+ 01", om minuten inte är noll, vilket innebär att minuten också skrivs ut, till exempel "+ 0130". Två bokstäver matar ut timmen och minuten, utan kolon, till exempel "+ 0130". Tre bokstäver matar ut timmen och minuten, med kolon, till exempel "+ 01:30". Fyra bokstäver matar ut timme och minut och valfritt sekund, utan kolon, till exempel "+ 013015". Fem bokstäver matar ut timme och minut och valfritt sekund, med kolon, till exempel "+ 01:30:15". Det går inte att utföra sex eller fler bokstäver. Mönster bokstaven X (versal) kommer att returnera "Z" när förskjutningen som ska matas ut skulle vara noll, medan mönster bokstaven "X" (gemener) kommer att returnera "+ 00", "+ 0000" eller "+ 00:00".

  • Offset O: detta formaterar den lokaliserade förskjutningen baserat på antalet mönster bokstäver. En bokstav utvärderar den korta formen av den lokaliserade förskjutningen, som är lokaliserad förskjuten text, till exempel GMT, med timme utan inledande nolla, valfri 2-siffrig minut och sekund om den inte är noll och kolon, till exempel "GMT + 8". Fyra bokstäver matar ut det fullständiga formuläret, som är lokaliserad förskjuten text, t. ex. GMT, med 2-siffrigt Tim-och minut fält, valfritt andra fält om det inte är noll, och kolon, till exempel ' GMT + 08:00 '. Det kommer inte att gå att räkna bokstäver.

  • Förskjut Z: detta formaterar förskjutningen baserat på antalet mönster bokstäver. En, två eller tre bokstäver matar ut timmen och minuten, utan kolon, till exempel "+ 0130". Utdata är "+ 0000" när förskjutningen är noll. Fyra bokstäver matar ut den fullständiga formen av lokaliserad förskjutning, motsvarande fyra bokstäver i förskjutning-O. Utdata är motsvarande lokaliserad förskjutnings text om förskjutningen är noll. Fem bokstäver matar ut timmen, minuten, med valfri sekund om den inte är noll, med kolon. Den matar ut "Z" om förskjutningen är noll. Det går inte att utföra sex eller fler bokstäver.

  • Valfritt avsnitts start och slut: används [] för att definiera ett valfritt avsnitt och kanske kapslat. Under formateringen är alla giltiga data utdata även om de finns i det valfria avsnittet. Under parsningen kan hela avsnittet saknas i den parsade strängen. Ett valfritt avsnitt startas av [ och avslutas med ] (eller i slutet av mönstret).

  • Symboler för "E", "F", "q" och "Q" kan endast användas för datetime-format, t. ex. date_format . De får inte användas för datetime-parsning, t. ex. to_timestamp .