Kopīgot, izmantojot


Datu tipi

Note

Microsoft Power Fx ir pamatnes programmu formulas valodas jaunais nosaukums. Šie raksti darbojas, kad izvelk valodu no pamatnes programmām, integrējot to ar citiem Microsoft Power Platform produktiem un padarām to pieejamu kā atvērtu avotu. Sāciet ar Microsoft Power Fx pārskatu par valodas ievadu.

Informācijas caur programmu plūst nelielās, diskrētās vērtībās, ļoti līdzīgi izklājlapas šūnām. Piemēram, kolonnā Dzimšanas diena un laukā Gadadiena esošie dati plūstu kā vērtība Datums, kas norāda gadu, mēnesi un dienu. Programma zina, kā šīs vērtības formatēt, ierobežo ievadi uz katrai atbilstošo un kopīgo šīs vērtības ar datu bāzi. Cilvēkiem dzimšanas dienas no gadadienām atšķiras, bet sistēma tās apstrādā pilnīgi vienādā veidā. Šajā gadījumā Datums ir datu tipa piemērs.

Šajā rakstā ir sniegta detalizēta informācija par pamatnes programmu atbalstītajiem datu tipiem. Kad programma izveido savienojumu ar ārēju datu avotu, katrs šī avota datu tips tiek kartēts uz kādu pamatnes programmas datu tipu.

Datu tips Apraksts Piemēri
Būla Vērtība true (patiess) vai false (aplams). Šī tipa datus var tieši izmantot funkcijās If (Ja), Filter (Filtrēt) un citās funkcijās bez salīdzinājuma. patiess
Krāsa Krāsu specifikācija, tostarp alfa kanāls. Krāsa.Sarkans
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0,5 )
Valūta Valūtas vērtība, kas tiek glabāta kā skaitlis ar peldošo komatu. Valūtas vērtības ir tādas pašas kā skaitliskās vērtības, bet ar valūtas formatējuma opcijām. 123
4.56
Datums Datums bez laika, programmas lietotāja laika joslā. Datums( 2019, 5, 16 )
DateTime Datums ar laiku, programmas lietotāja laika joslā. DateTimeValue( "16. maijs, 2019 1:23:09 PM" )
Decimāldaļas Skaitlis ar augstu precizitāti, bāzes 10 operācijām un ierobežotu diapazonu. 123
Decimāldaļas( "1.2345" )
GUID Vispārēji unikāls identifikators. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hipersaite Teksta virkne, kurā ir hipersaite. "https://powerapps.microsoft.com"
Attēlu Universālais resursu identifikators jeb Universal Resource Identifier (URI), teksta virkne uz attēlu .jpeg, .png, .svg, .gif vai citā parastajā tīmekļa attēla formātā. MyImage pievienots kā programmas resurss
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Media URI teksta virkne uz video vai audio rindu. MyVideo pievienots kā programmas resurss
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Skaits vai pludiņš Skaitlis ar standarta precizitāti, bāzes 2 operācijām un plašu diapazonu. 123
8.903e121
1.234e200
Izvēle Izvēle no kādas opciju kopas, norādīta ar skaitli. Šis datu tips apvieno lokalizējamu teksta etiķeti un skaitlisku vērtību. Šī etiķete ir redzama programmā, un skaitliskā vērtība tiek glabāta un izmantota salīdzināšanai. ThisItem.OrderStatus
Rekords Datu vērtību rinda. Šis saliktais datu tips ietver citu šajā tēmā uzskaitīto datu tipu instances. Papildinformācija: Darbs ar tabulām. { Uzņēmums: "Northwind Traders",
Personāls: 35,
Bezpeļņas: nepatiess }
Atsauce reģistrā Atsauce uz ierakstu tabulā. Šādas atsauces bieži tiek izmantotas ar polimorfu uzmeklēšanu. Papildinformācija: Darbs ar atsaucēm. Pirmais(konti). Īpašnieks
Galds Rindu tabula. Visās rindās kolonnām ar vienādiem datu tipiem ir nepieciešami vienādi nosaukumi, un izlaistās kolonnas tiek apstrādātas kā tukšas kolonnas. Šis saliktais datu tips ietver citu šajā tēmā uzskaitīto datu tipu instances. Papildinformācija: Darbs ar tabulām. Tabula( { Vārds: "Sidnijs",
Uzvārds: "Higa" },
{ Vārds: "Nancy",
Uzvārds: "Anderson" } )
Teksts Unikoda teksta virkne. "Sveika, pasaule"
Laiks Laiks bez datuma, programmas lietotāja laika joslā. Laiks( 11, 23, 45 )
Divas iespējas Izvēle no kādas divu opciju kopas, norādīta ar Būla vērtību. Šis datu tips apvieno lokalizējamu teksta etiķeti un Būla vērtību. Šī etiķete ir redzama programmā, un Būla vērtība tiek glabāta un izmantota salīdzināšanai. ThisItem.Taxable
netipizēts objekts Nedeklarēta tipa objekts. Pamatobjekts var būt jebkurš esošais tips, un to var konvertēt saderīgos tipos, izmantojot funkcijas, piemēram. Búla(), Vértíba(), Tabula() utt. Papildinformāciju skatiet sadaļā Nemaśínraksta objekts un Darbs ar JSON. ParseJSON("{ ""Lauks"" : 1234 }"). Lauks

Daudzi no šiem datu tipiem ir līdzīgi un tiem ir vienāds pamata attēlojums, piemēram, kolonna Hipersaite tiek apstrādāta kā Teksts. Papildu datu tipi veidlapās un citās vadīklās nodrošina labāku noklusējuma funkcionalitāti.

Tukšs

Visiem datu tipiem var būt tukša vērtība (citiem vārdiem sakot, bez vērtības). Šī jēdziena apzīmēšanai datu bāzēs bieži tiek izmantots termins “null”.

Lai kādu mainīgo vai kolonnu iestatītu uz tukšu vērtību, izmantojiet funkciju Blank (Tukšs) ar Set (Kopa) vai Patch (Ielāps). Piemēram, funkcija Set( x, Blank() ) noņem visas vērtības, kas ir globālajā mainīgajā x.

Testējiet, vai kāda vērtība ir tukša, izmantojot funkciju IsBlank. Iespējamās tukšās vērtības nomainiet pret vērtībām, kas navtukšas, izmantojot funkciju Coalesce.

Tā kā visi datu tipi atbalsta tukšas vērtības, datu tipiem Būla vērtība un Divu opciju faktiski ir trīs iespējamās vērtības.

Visi četri šie datu tipi ir balstīti uz Unikoda teksta virkni.

Iegults teksts

Formulā iegultas teksta virknes ietver dubultās pēdiņas. Lai teksta virknē attēlotu vienu dubulto pēdiņu, izmantojiet divas dubultās pēdiņas kopā. Piemēram, vadīklas Button rekvizītā OnSelect izmantojot šādu formulu:

Notify( "Jane said ""Hello, World!""" )

pēc pogas nospiešanas tiek iegūts reklāmkarogs, kur ir izlaistas pirmās un pēdējās dubultās pēdiņas (jo tās norobežo teksta virkni) un atkārtotās dubultās pēdiņas ap Sveiki, Pasaule! tiek aizstātas ar vienu dubulto pēdiņas zīmi:

uznirstošais paziņojums ar ziņojumu Līga teica:

Vienkāršās pēdiņas zímes netiek izmantotas identifikatoru nosaukumiem, kuri satur īpašās rakstzīmes un tekstá nav nozīmes.

Virknes interpolācija

Izmantojiet virknes interpolāciju, lai teksta virknē ieslégtu formulas. Ar to bieži vien ir vieglāk strādāt un vizualizēt izvadi, nekā izmantojot funkciju Concatenate vai & operator.

Lietojiet prefiksu teksta virknei ar dolāra zīmi $ un ievietojiet formulu, ieslégto loka iekavās { }. Lai teksta virknē iekļautu lokveida iekavas, izmantojiet atkārtotus lokveida iekavās: {{ vai }}. Virknes interpolāciju var izmantot jebkurā vietā, kur var izmantot standarta teksta virkni.

Piemēram, ņemiet vērā šís formulas vērtību, iestatot globālos mainīgos ÁbolI iestatīti uz 3, un Banáni iestatīti uz 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

Šī formula atgriež teksta virkni Mums ir 3 āboli, 4 banáni, kas kopā dod 7 augĺus. Mainīgie Aboli un Banáni tiek ievietoti tekstā, kas aizstāj liektās iekavas, kā arī matemātiskās formulas rezultātu Aboli + Banáni Atstarpes un citas rakstzīmes ap lokveida iekavám tiek saglabātas tā, kādas tās ir.

Ieslégtajás formulās var būt iekļautas jebkuras funkcijas vai operatori. Viss, kas nepieciešams, ir tas, lai formulas rezultātu varētu pievienot teksta virknei. Piemēram, šajā formulā sveicienā tiks ievietota Iesauka , ja tá ir sagādāta, vai Vārds , ja nav sagádáta:

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )

Ja Iesauka ir iestatīta uz "Dźo", tad šī formula rada teksta virkni Laipni lūdzam, Džo, prieks iepazīties!. Bet, ja Iesauka ir neaizpildíta un Várds ir "Džozefs", tad šī formula rada Cien. Džozefs, prieks iepazīties! śajá vietā.

Virkņu interaktivizācija iegultajā formulā var iekļaut standarta teksta virknes. Piemēram, ja ne Iesauka, ne Várds netiek nodrošināts, mēs joprojām varētu nodrošināt "Draugs" , kas varētu būt aizstājējs:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

Virknes interpolācijas var pat ievietot ligzdās. Izskatiet šo piemēru, kur Vārds, Otrais várds un Uzvārds tiek apvienoti sveicienā. Pat ja viena vai divas no šīm vieníbám ir neaizpildítas, pareizais atstarpju skaits bús ievietots starp várda daļām. Ja neviena no daļām nav nodrošināta, iekšējā virknes interpolācija sabruks līdz tukšai virknei un tiks aizstāta ar Fúzijas funkciju "Draugs".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Vārds Vidū Pēdējais Rezultāts
Džons Kvinīcija Doe Welcome John Quincy Doe!
Džons Tukša Doe Welcome John Doe!
Tukša Tukša Doe Welcome Doe!
Tukša Tukša Tukša Welcome Friend!

Jaunās rindiņas

Ieslégtajás teksta virknēs var būt jaunas rindas. Piemēram, izskatiet iestatíjumus Etiḱetes kontroles Teksta ípaśumam, izmantojot šādu formulu:

"Line 1
Line 2
Line 3"

Izmantojot iepriekš minēto formulas vērtību, etiķetes kontrolé tiek rādītas trīs rindiņas:

Iegulta teksta virkne un etiķešu vadīkla, kurā redzamas trīs rindiņas ar 1. līniju, 2. līniju un 3. līniju.

Jaunás rindińas tiek atbalstītas arī ar virkņu interpolāciju, kā parādīts zemák:

$"Line {1}
Line {1+1}
Line {1+1+1}"

Izmantojot iepriekš minēto formulas rezultātu, tiek sasniegts tāds pats rezultáts:

Virknes interpolācijas formula un etiķetes vadīkla, kurā redzamas trīs līnijas ar 1. līniju, 2. līniju un 3. līniju.

Attēlu un multivides resursi

Izmantojot izvēlni Fails, kā programmas resursus varat pievienot attēlu, video un audio failus. Importētā faila nosaukums programmā kļūst par resursa nosaukumu. Šajā diagrammā programmai ir pievienots Northwind Traders logotips, kura nosaukums ir nwindlogo:

Ziemeļu vēja resurss.

Lai šo resursu izmantotu programmā, norādiet to vadīklas Attēls rekvizītā Attēls:

Northwind attēls.

URI attēliem un citai multividei

Pēdējo piemēru varat papētīt pamatīgāk, vadīklas Etiķete rekvizītu Teksts iestatot uz nwindlogo. Etiķetē tiek rādīta teksta virkne:

Northwind teksts.

Uz katru attēla vai citas multivides failu (neatkarīgi no tā, vai tas atrodas mākonī, vai tiek pievienots kā programmas resurss) pamatnes programmas atsaucas, izmantojot URI teksta virkni.

Piemēram, Attēla rekvizīts attēla kontrolei pieņem ne tikai programmas resursus, bet arī saites uz attēliem tīmeklī, pieméram "https://northwindtraders.com/logo.jpg"". Šis rekvizīts pieņem arī iekļautos attēlus, kas izmanto datu URI shēmu, kā šajā piemērā:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

Šāds URI rāda divu violetu rombu palielinātu versiju:

Dubultie dimanti.

Varat rādīt pēdējo vadīklā Kamera uzņemto attēlu, ja attēla vadīklas rekvizītu Attēls iestatāt uz kameras vadīklas rekvizītu Fotoattēls. Šī programma glabā atmiņā attēlu, un kameras vadīklas rekvizīts Fotoattēls atgriež URI atsauci uz attēlu. Piemēram, jūs varētu uzņemt fotogrāfiju, un kameras rekvizīts Fotoattēls varētu atgriezt "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Lai atsauktos uz attēlu vai citu datu bāzē glabātu multivides failu, ir jāizmanto URI. Šādi programma neizgūst faktiskos datus līdz brīdim, kad tas faktiski ir nepieciešams. Piemēram, Microsoft Dataverse tabulas pielikums var atgriezt "appres://datasources/Contacts/table/..." Kā kameras piemērā šo attēlu var parādīt, iestatot šai atsaucei attēla vadīklas rekvizītu Attēls, kas izgūst bināros datus.

Kad kādu multivides datu tipu, piemēram, attēlu, saglabājat datu bāzē, programma sūta faktiskos attēla vai multivides datus, nevis URI atsauci.

Lieluma ierobežojumi

Kā teksta virknēm un URI identifikatoriem šo datu tipu garumam nav sākotnēji iestatītu ierobežojumu.

Binārajiem datiem, uz kuriem šie datu tipi atsaucas, arī nav sākotnēju lieluma ierobežojumu. Piemēram, ar kameras vadīklu uzņemts attēls, uz kuru tagad atsaucas kā uz "appres://...", var būt tik liels un ar tik augstu izšķirtspēju, cik vien ierīces kamera spēj iegūt. Datu tips neierobežo multivides failu izšķirtspēju, kadru nomaiņas ātrumu un citus atribūtus, taču speciālajām vadīklām multivides atskaņošanai un uztveršanai varētu būt pašām savi ierobežojumi.

Taču uz visiem datu lielumiem attiecas programmā pieejamās atmiņas daudzums. Pārlūkprogrammas, kas darbojas galddatoros, parasti atbalsta vairāk par 100 megabaitiem datu. Taču tādās ierīcēs kā tālruņi pieejamās atmiņas daudzums varētu būt daudz mazāks, parasti 30–70 megabaitu diapazonā. Lai noteiktu, vai jūsu programma darbosies ar šādiem ierobežojumiem, testējiet tipiskos scenārijus visās ierīcēs, kurās programmai ir jādarbojas.

Paraugprakse ir turēt datus atmiņā tikai tik ilgi, cik nepieciešams. Augšupielādējiet attēlus datu bāzē, cik drīz vien iespējams; lejupielādējiet attēlus tikai tad, kad programmas lietotājs tos pieprasa.

Numuri

Piezīmes

Power Apps atbalsta tikai Float šodien, un tas ir visu skaitļu veids. Drīzumā tiks pievienots decimālais atbalsts.

Power Fx atbalsta divu veidu skaitļus: Decimāldaļu un Float (ar sinonīmiem Skaitlis un Valūta).

Decimāls ir labākais lielākajai daļai biznesa aprēķinu. Tas var precīzi attēlot skaitļus 10. bāzē, kas nozīmē, ka 0.1 tos var precīzi attēlot un kuri nebūs pakļauti noapaļošana kļūdām aprēķinu laikā. Tam ir pietiekami liels diapazons jebkurai biznesa vajadzībai, līdz 1028 ar precizitāti līdz 28 cipariem. Decimāls ir noklusējuma ciparu datu tips lielākajai daļai Power Fx resursdatoru, ko izmanto, ja vienkārši raksta 2*2.

Pludiņš ir labākais zinātniskiem aprēķiniem. Tas var attēlot skaitļus daudz plašākā diapazonā, līdz pat 10308. Precizitāte ir ierobežota līdz 15 zīmēm aiz komata, un matemātikas pamatā ir 2. bāze, tāpēc tā nevar precīzi attēlot dažas kopīgas decimāldaļas vērtības. Pludiņam ir arī augstāka veiktspēja, un tas ir labvēlīgs, ja tas ir faktors un precizitāte nav kritiska.

Decimālskaitļi

Decimāldatu tips visbiežāk izmanto .NET decimālo datu tipu. Daži resursdatori, piemēram Dataverse , formulu kolonnas, kas tiek palaistas SQL Serer, izmanto SQL Server decimālo datu tipu.

Decimāls veic matemātiku tā, kā jūs mācījāties skolā, izmantojot bāzes 10 ciparus. Tas ir ļoti svarīgi, lai izvairītos no noapaļošana kļūdām no ļoti mazām atšķirībām, kas var uzkrāties, izmantojot 2. bāzes matemātiku (kā to izmanto Float).

Diapazons ir no pozitīva 79,228,162,514,264,337,593,543,950,335 līdz negatīvam 79,228,162,514,264,337,593,543,950,335. Decimāldaļu atdalītāju var novietot jebkurā vietā šajos skaitļos, nodrošinot līdz pat 28 ciparu precizitāti, un tas joprojām ir precīzi attēlots. Piemēram, 79,228,162,514,264.337593543950335 var precīzi attēlot, tāpat kā 7.9228162514264337593543950335.

Peldošā komata numuri

Datu tips Float , kas pazīstams arī kā skaitlis vai valūta, izmanto IEEE 754 dubultās precizitātes peldošā komata standartu. Šāds standarts darbam sniedz ļoti lielu skaitļu diapazonu, no –1,79769 x 10308 līdz 1,79769 x 10308. Vismazākā parādāmā vērtība ir 5 x 10–324.

Pludiņš var precīzi attēlot veselus skaitļus (vai veselus skaitļus) starp –9,007,199,254,740,991 (–(253 – 1)) un 9,007,199,254,740,991 (253 – 1), ieskaitot. Šis diapazons pārsniedz 32 bitu (jeb 4 baitu) veselu skaitļu datu tipus, kurus datu bāzes izmanto parasti. Taču pamatnes programmas nespēj parādīt 64 bitu (jeb 8 baitu) veselu skaitļu datu tipus. Jūs varētu vēlēties šo skaitli glabāt teksta kolonnā vai izmantot kādu aprēķinātu kolonnu, lai skaitlim izveidotu kopiju teksta kolonnā un pamatnes programmā tas tiktu kartēts datu tipā Teksts. Šādi jūs varat aizturēt, parādīt un ievadīt šīs vērtības, kā arī salīdzināt tās, lai noteiktu, vai tās ir vienādas; taču šādā formā ar tām nevar veikt skaitliskus aprēķinus.

Peldošā komata aritmētika ir aptuvena, tādēļ reizēm tā var sniegt negaidītus rezultātus ar daudziem dokumentētiem piemēriem. Jūs varētu gaidīt, ka formula 55 / 100 * 100 kā rezultātu atgriež precīzi 55, un ka formula (55 / 100 * 100) - 55 atgriež precīzi nulli. Taču pēdējā formula kā rezultātu atgriež 7,1054 x 10–15,kas ir ļoti maz, bet nav nulle. Šī niecīgā starpība parasti neizraisa problēmas, un programma to noapaļo, kad tiek rādīts rezultāts. Taču mazas atšķirības secīgos aprēķinos var uzkrāties un izskatīties kā nepareizi sniegta atbilde.

Datu bāzu sistēmās valūtas bieži vien tiek glabātas un aprēķini tiek veikti, izmantojot decimālo matemātiku, kas nodrošina mazāku diapazonu, bet lielāku kontroli pār precizitāti. Pēc noklusējuma pamatnes programmas valūtas kartē uz un no vērtībām ar peldošo komatu; tādēļ rezultāts varētu atšķirties no aprēķiniem, kas tiek veikti, izmantojot natīvo decimālo datu tipu. Ja šāda veida neatbilstība radīs problēmas, apsveriet iespēju ar šādām vērtībām strādāt kā ar vērtībām Teksts, gluži tāpat, kā šajā sadaļā iepriekš aprakstīts par lieliem veseliem skaitļiem.

Noklusējumi un reklāmguvumi

Piezīmes

Power Apps atbalsta tikai Float šodien, un tas ir visu skaitļu veids. Drīzumā tiks pievienots decimālais atbalsts.

Lielākā daļa Power Fx saimnieku pēc noklusējuma izmanto decimālo skaitli. Tas ietekmē:

  • Burtu skaitļi formulās. Skaitlis 1.234 tiks interpretēts kā decimālā vērtība. Piemēram, formula interpretēs un kā Decimāldaļu 1.234 * 2 un atgriezīs 1.234 decimāldaļu 2 rezultātu.
  • Vērtības funkcija. Value( "1.234" ) atgriezīs vērtību Decimāldaļa . Piemēram, formula Value( "1.234" ) * 2 Funkcija Value interpretēs teksta virknes "1.234" saturu kā decimāldaļu.

Lai strādātu ar Float vērtībām, tiek izmantota funkcija Float . Paplašinot iepriekš minēto piemēru, Float( 1.234 ) decimāldaļa tiks pārveidota1.234 par pludiņu. Float var izmantot arī kā vērtības aizstājēju , lai pārvērstu virkni, kurā ir peldošā komata skaitlis, piemēram Float( "1.234" ) , par float vērtību, kas ir nepieciešama, ja skaitli nevar attēlot kā decimāldaļu.

Kopsavilkumā:

Lietojums Decimāldaļas Peldēt
Burtu skaitļi formulās 1.234 Float( 1.234 )
Float( "1.234" )
Pārvēršana no teksta virknes Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Konvertēšana starp ciparu tipiem Decimal( float ) Float( decimal )
Pārvēršana par teksta virkni Text( decimal ) Text( float )

Ciparu veidu sajaukšana

Float un Decimāldaļas vērtības var brīvi sajaukt. Sajaucot,Decimāldaļas vērtības tiek pārvērstas par Float vērtībām, pateicoties lielākam diapazonam. Tā kā tas var izraisīt precizitātes zudumu, ir svarīgi tos nejaukt nevajadzīgi. Tā kā decimāls ir noklusējuma burtiskais datu tips un lielākā daļa skaitlisko funkciju saglabās tipu, ir salīdzinoši viegli izvairīties no pārejas uz Float , to nevēloties.

Piemēram, apsveriet šādu aprēķinu, izmantojot pac power-fx repl pēc CLI Power Platform instalēšanas. Tā kā abi skaitļi ir decimāldaļas, aprēķins tiek veikts decimāldaļās , un rezultāts saglabā pilnīgu precizitāti:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Ja tā vietā otrais operands tiktu nomainīts uz Float , tad viss aprēķins tiktu veikts Float un tiktu zaudēta niecīgā frakcionētā daļa:

>> 1.0000000000000000000000000001 * Float(2)
2

Datums, Laiks un DateTime

Laika joslas

Datuma/laika vērtības ietilpst tālāk norādītajās kategorijās.

  • Lokālais lietotājs: šīs vērtības tiek glabātas pēc universālā koordinētā laika (UTC), taču lietotnes lietotāja laika josla ietekmē to, kā lietotne parāda šīs vērtības un kā lietotnes lietotājs tās norāda. Piemēram, tas pats brīdis lietotājam Kanādā tiek rādīts citādi nekā lietotājam Japānā.
  • Neatkarīgs no laika joslas: lietotne parāda šīs vērtības vienādi, un lietotnes lietotājs tās norāda vienādi, neatkarīgi no laika joslas. Tas pats brīdis lietotājam Kanādā tiek rādīts tāpat kā lietotājam Japānā. Programmu autori, kuri neplāno, ka viņu programmas tiks darbinātas dažādās laika joslās, šīs vērtības izmanto, jo vispār tas ir vienkāršāk.

Nākamajā tabulā ir parādīti daži piemēri.

Datuma/laika tips Datu bāzē glabātā vērtība Rādītā un ievadītā vērtība 7 stundas uz rietumiem no UTC Rādītā un ievadītā vērtība 4 stundas uz austrumiem no UTC
Lietotājs vietējais Svētdiena,19.maijs,2019
4:00
Sestdiena,18.maijs,2019
21:00
Svētdiena,19.maijs,2019
8:00
Neatkarīgs no laika joslas Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00

Datumiem/laikiem Lietotāja vietējais pamatnes programmas izmanto pārlūkprogrammas vai ierīces laika joslu, bet modeļa vadītas programmas izmanto lietotāja iestatījumu pakalpojumā Dataverse. Šie iestatījumi parasti saskan, bet rezultāti atšķirsies, ja šie iestatījumi ir atšķirīgi.

Izmantojiet funkcijas DateAdd un TimeZoneInformation, lai vietējo laiku pārveidotu par UTC un atpakaļ. Šo funkciju piemērus skatiet dokumentācijas beigās.

Skaitliskie ekvivalenti

Neatkarīgi no tā, vai tiek izmantots iestatījums Lietotāja vietējais, vai Neatkarīgs no laika joslas, visas dienas/laika vērtības pamatnes programmas patur un aprēķina kā UTC. Šo vērtību rādīšanas laikā un laikā, kad programmas lietotājs tās norāda, programma šīs vērtības tulko, pamatojoties uz programmas lietotāja laika joslu.

Kad pamatnes programma no datu avota nolasa vai datu avotā ieraksta kādu vērtību Neatkarīgs no laika joslas, programma šo vērtību automātiski noregulē, lai kompensētu atbilstoši programmas lietotāja laika joslai. Pēc tam programma šo vērtību apstrādā kā UTC vērtību, atbilstoši visām pārējām programmā esošajām datuma/laika vērtībām. Šīs kompensācijas dēļ sākotnējā vērtība Neatkarīgs no laika joslas kļūst redzama, kad programma šo UTC vērtību regulē programmas lietotāja laika joslai.

Šo uzvedību labāk varat novērot, izmantojot funkciju Value, lai piekļūtu datuma/laika vērtības pamatā izmantotajai skaitliskajai vērtībai. Šī funkcija datuma/laika vērtību atgriež kā skaitu, cik milisekunžu ir pagājis kopš 1970. gada 1. janvāra, plkst. 00:00:00.000 UTC.

Tā kā ikviena datuma/laika vērtība tiek glabāta kā UTC, vairumā pasaules vietu formula Value( Date( 1970, 1, 1 ) ) neagriež nulli, jo funkcija Date datumu atgriež kā UTC. Piemēram, formula atgrieztu 28 800 000 tādā laika joslā, kurai no UTC ir nobīde par astoņām stundām. Šis skaitlis atspoguļo milisekunžu skaitu astoņās stundās.

Atgriežoties pie mūsu iepriekšēja piemēra:

Datuma/laika tips Datu bāzē glabātā vērtība Rādītā un ievadītā vērtība 7 stundas uz rietumiem no UTC Vērtības funkcija atgriež
Lietotājs vietējais Svētdiena,19.maijs,2019
4:00
Sestdiena,18.maijs,2019
21:00
1,558,238,400,000
(Svētdiena,19.maijs,2019
4:00 UTC)
Neatkarīgs no laika joslas Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00
1,558,263,600,000
(Svētdiena,19.maijs,2019
11:00 UTC)

Unix laiku konvertēšana

Unix laiki rāda, cik sekunžu ir pagājis kopš 1970. gada 1. janvāra, plkst. 00:00:00 UTC. Tā kā pamatnes programmas izmanto milisekundes, nevis sekundes, varat konvertēt starp abām vērtībām, reizinot vai dalot ar 1000.

Piemēram, 2001. gada 9. septembri, plkst. 01:46:40 UTC Unix laiks rāda kā 1 000 000 000. Lai šo datuma/laika vertību parādītu pamatnes programmā, reiziniet šo skaitli ar 1000, lai konvertētu uz milisekundēm, un pēc tam izmantojiet to funkcijā Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) atgriež virkni 2001-09-09T01:46:40.000Z.

Taču šī funkcija atgriež Sestdiena, 2001. gada 8. septembris, plkst. 18:46:40, ja izmantojat formātu DateTimeFormat.LongDateTime24 laika joslā, kam ir -7 stundu nobīde no UTC (7 stundas uz rietumiem no UTC). Šis rezultāts vērtību DateTime rāda pareizi, ņemot vērā vietējo laika joslu.

Lai konvertētu uz Unix laiku, rezultāts no funkcijas Value ir jādala ar 1000:
RoundDown( Vērtība(UnixTime ) / 1000, 0 )

Ja Unix laiks vērtībā Date jums ir vajadzīgs turpmākiem aprēķiniem vai parādīšanai pakalpojumā Power Apps, izmantojiet šādu formulu:
DateAdd( Datums( 1970,1,1 ), UnixTime, Sekundes )

SQL Server

SQL Server izmanto Datetime, Datetime2 un citus datuma/laika datu tipus, kas neietver laika joslas nobīdi un nenorāda, kurā laika joslā jūs atrodaties. Pamatnes programmas pieņem, ka šīs vērtības tiek glabātas kā UTC, un apstrādā tās kā Lietotāja vietējais. Ja vērtībām ir paredzēts būt neatkarīgām no laika joslas, koriģējiet UTC tulkojumus, izmantojot funkciju TimeZoneOffset.

Konvertējot vērtību uz programmas iekšējo UTC attēlojumu, pamatnes programmas izmanto kolonnās Datetimeoffset iekļauto laika joslas informāciju. Rakstot datus, kā laika joslu programmas vienmēr izmanto UTC (laika joslas nobīde ir nulle).

Vērtības ar datu tipu Laiks pamatnes programmas nolasa no SQL Server un raksta SQL Server kā teksta virknes ISO 8601 ilguma formātā. Piemēram, jums ir nepieciešams parsēt šo virknes formātu un izmantot funkciju Time, lai teksta virkni "PT2H1M39S" konvertētu uz vērtību Laiks:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

Datuma un laika informācijas sajaukšana

Date, Time un DateTime ir dažādi nosaukumi, taču tajos visos ir viena un tā pati informācija par datumiem un laikiem.

Vērtībā Datums var būt laika informācija, kas parasti ir pusnakts. Vērtībā Laiks var būt datuma informācija, kas parasti ir 1970. gada 1. janvāris. Pakalpojumā Dataverse laika informācija tiek glabāta ar kolonnu Tikai datums, bet pēc noklusējuma tiek rādīta tikai datuma informācija. Līdzīgi arī pamatnes programmas šos datu tipus reizēm nošķir, lai noteiktu noklusējuma formātus un vadīklas.

Nav ieteicams datuma un laika vērtības pievienot un atņemt tiešā veidā, jo laika joslas un cita konvertēšana var dot maldinošus rezultātus. Vai nu izmantojiet funkciju Value, lai vispirms konvertētu datuma/laika vērtības uz milisekundēm un ņemtu vērā programmas lietotāja laika joslu, vai izmantojiet funkcijas DateAdd un DateDiff, lai vienu no šīm vērtībām pievienotu vai atņemtu.

Izvēles iespējas un Jā/Nē

Izvēļu un divu opciju datu tipi programmas lietotājam nodrošina divas vai vairākas atlases iespējas. Piemēram, izvēle Pasūtījuma statuss var piedāvāt izvēli Jauns, Nosūtīts, Izrakstīts rēķins un Slēgts. Divu opciju datu tips piedāvā tikai divas izvēles iespējas.

Abos šajos datu tipos to etiķetes tiek rādītas teksta virknes kontekstā. Piemēram, etiķetes vadīkla parāda vienu no pasūtījuma statusa opcijām, ja vadīklas rekvizīts Teksts ir iestatīts kā formula, kurā ir atsauce uz šo izvēli. Programmas lietotājiem dažādās atrašanās vietās opciju etiķetes varētu būt lokalizētas.

Kad programmas lietotājs atlasa kādu opciju un saglabā veiktās izmaiņas, programma šos datus nosūta uz datu bāzi, kur dati tiek saglabāti no valodas neatkarīgā attēlojumā. Opcija Izvēlé tiek pārsūtīta un saglabāta kā skaitlis, un opcija divu opciju datu tipam tiek pārsūtīta un saglabāta kā Būla vērtība.

Etiķetes ir paredzētas tikai rādīšanai. Ar etiķetēm nevar veikt tiešu salīdzināšanu, jo tās ir atkarīgas no valodas. Tā vietā katrai izvēlei ir uzskaitījums, kas darbojas ar pamatā esošo skaitli vai būla vērtību. Piemēram, nevar izmantot šādu formulu:

If( ThisItem.OrderStatus = "Active", ...

Taču var izmantot šādu formulu:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

Globālajām izvēlēm (kurām tabulām tiek koplietots) opciju kopas nosaukums atbilst globālās izvēles nosaukumam. Lokālajām izvēlēm (kas ir ietvertas tabulā) nosaukumā var būt iekļauts tabulas nosaukums. Šādā veidā var izvairīties no konfliktiem, ja vairākām tabulām ir izvēles iespējas ar vienādu nosaukumu. Piemēram, Uzņēmumu tabulai var būt izvēle OrderStatus, un tā nosaukums var būt OrderStatus (Uzņēmumi). Šajā nosaukumā ir viena vai vairākas atstarpes un iekavas, tādēļ, ja formulā uz to atsaucaties, šis nosaukums ir jāliek vienpēdiņās.

Turklāt divu opciju vērtības var uzvesties arī kā Būla vērtības. Piemēram, divu opciju vērtībai ar nosaukumu TaxStatus varētu būt etiķetes Apliekams ar nodokli un Neapliekams ar nodokli, kas attiecīgi atbilst vērtībām true (patiess) un false (aplams). Demonstrācijai varat izmantot šādu formulu:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

Varat izmantot arī šo ekvivalento formulu:

If( ThisItem.Taxable, ...