Типи даних

Нотатка

Microsoft Power Fx — це нове назва мови формул компонованих програм. Робота над цим циклом статей триває, оскільки ми поступово виокремлюємо згадану мову з компонованих програм, інтегруємо її з іншими продуктами Microsoft Power Platform і робимо відповідний код відкритим. Почніть знайомство з мовою формул з Огляду Microsoft Power Fx.

Інформація передається у програмі малими дискретними значеннями, що нагадують клітинки в електронних таблицях. Наприклад, дані у полі День народження та у полі Річниця передаватимуться значенням Дата, що складається з року, місяця і дня. Програмі відомо, як форматувати ці значення, щоб обмежити введені величини до потрібного у кожному випадку формату і їх передавання до бази даних. Дні народження і річниці є відмінними для людей, але система обробляє їх повністю однаково. У наведеному прикладі Дата є прикладом типу даних.

У цій статті наведено відомості про типи даних, які підтримуються у компонованих програмах. Коли програма підключається до зовнішнього джерела даних, кожен тип даних з цього джерела зіставляється з типом даних для компонованих програм.

Тип даних Опис Приклади
Логічне значення Значення true або false. Може застосовуватися безпосередньо у функціях If, Filter та інших функціях без порівняння. True
Колір Специфікація кольору, включно з альфа-каналом. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Грошова одиниця Значення грошової одиниці, яке зберігається як число з рухомою комою. Значення грошової одиниці такі ж, що й числові значення, але з параметрами форматування грошових одиниць. 123
4,56
Дата Дата без часу, в часовому поясі користувача програми. Дата( 2019, 5, 16 )
Дата та час Дата з часом у часовому поясі користувача програми. DateTimeValue («16 травня 2019 1:23:09 PM»)
Десятковий Номер з високою точністю, базовими 10 операціями та обмеженим діапазоном. 123
Десятковий( "1.2345" )
GUID Глобально унікальний ідентифікатор. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Гіперпосилання Текстовий рядок, що містить гіперпосилання. "https://powerapps.microsoft.com"
Image Уніфікований ідентифікатор ресурсу (URI) текстовий рядок до зображення у форматах JPEG, PNG, SVG, GIF або будь-якому іншому форматі веб-зображення. MyImage додано як ресурс програми
"https://northwindtraders.com/logo.jpg"
«appres://blobmanager/7b12ffa2...»
Засоби масової інформації Текстовий рядок з ідентифікатором URI, приєднаний до відео або звукозапису. MyVideo додано як ресурс програми
"https://northwindtraders.com/intro.mp4"
«appres://blobmanager/3ba411c...»
Число або плаваюча точка Номер зі стандартною точністю, операціями з основою 2 та широким діапазоном. 123
8.903e121
1.234e200
Вибір Вибір з набору пронумерованих варіантів. У цьому типі даних поєднано числове значення з локалізовуваним текстовим підписом. Надпис відображається у програмі, а числове значення зберігається та застосовування для порівняння. ThisItem.OrderStatus
Запис Запис значень даних. Цей складений тип даних містить інсталяції інших типів даних, перелічених у цьому розділі. Додаткові відомості: Робота із таблицями { Company: "Northwind Traders",
Staff: 35,
NonProfit: false }
Посилання на запис Посилання на запис у таблиці. Такі посилання часто використовуються для поліморфних підстановок. Додаткові відомості: Робота з посиланнями First(Accounts).Owner
Table Таблиця записів. У всіх записів мають бути однакові імена полів з однаковими типами даних, а пропущені поля вважаються пустими. Цей складений тип даних містить інсталяції інших типів даних, перелічених у цьому розділі. Додаткові відомості: Робота із таблицями Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Текст Текстовий рядок у кодуванні Юнікод. «Привіт усім»
Час Час без дати в часовому поясі користувача програми. Time( 11, 23, 45 )
Два параметри Вибір з набору двох варіантів логічних значень У цьому типі даних поєднано логічне значення з локалізовуваним текстовим підписом. Надпис відображається у програмі, а логічне значення зберігається та застосовується для порівняння. ThisItem.Taxable
Нетипізований об’єкт Об’єкт неоголошеного типу. Основний об’єкт може бути будь-якого наявного типу, і його можна перетворити на сумісні типи за допомогою функцій, як-от Boolean(), Value(), Table() тощо. Для отримання додаткових відомостей див. розділи Нетипізований об’єкт і Робота з JSON. ParseJSON("{ ""Field"" : 1234 }").Field

Багато з цих типів даних є схожими і мають однакове базове відображення, наприклад поле Гіперпосилання обробляється як Текст. Додаткові типи даних забезпечують зручність роботи з формами та іншими елементами керування за замовчуванням.

Пусто

Усі типи даних можуть мати пусте значення пустий (іншими словами, не мати значення). На позначення цього концепту у базах даних часто використовується термін «null».

Скористайтеся функціями Blank, Set або Patch для присвоєння змінній або полю пустого значення blank. Наприклад, Set( x, Blank() ) видаляє будь-яке значення глобальної змінної x.

Для перевірки значення blank змінної застосовується функція IsBlank. Заміна можливих пустих значень blank непустими (non-blank) виконується за допомогою функції Coalesce.

Оскільки всі типи даних підтримують пусті значення, типи даних Boolean (логічне значення) і Two option (Два варіанти) фактично мають три можливі значення.

Усі ці чотири типи даних мають за основу текстовий рядок Юнікод.

Вбудований текст

Вбудовані у формули текстові рядки додаються у подвійних лапках. Для відображення лапок у текстовому рядку слід вживати дві пари лапок підряд. Наприклад, застосування такої формули для властивості OnSelect елементу керування Кнопка:

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

у разі натискання кнопки забезпечить відображення повідомлення, в якому перші й останні подвійні лапки опускаються (оскільки вони обрамляють текстовий рядок), а повторювані подвійні лапки навколо Привіт усім! замінюються одинарними подвійними лапками:

спливаюче сповіщення з повідомленням від Джейн «Hello, World».

Одинарні подвійні лапки застосовуються для імен ідентифікаторів, що містять спеціальні символи, та не мають особливого значення в текстовому рядку.

Інтерполяція рядків

Використовуйте інтерполяцію рядків для вбудовування формул у текстовий рядок. З цим часто простіше працювати та візуалізувати вихідні дані, ніж використовувати функцію або оператор Concatenate .

Додайте префікс до текстового рядка у вигляді знака долара $ та візьміть формулу у фігурні дужки { }. Щоб включити фігурні дужки в текстовий рядок, використайте подвійні фігурні дужки: {{ або }}. Інтерполяцію рядка можна використовувати в будь-якому місці стандартного текстового рядка.

Наприклад, розглянемо цю формулу, в якій для глобальних змінних Яблука установлено значення 3, а для Банани – значення 4:

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

Ця формула повертає текстовий рядок У нас є 3 яблука, 4 банани, що дає загальну кількість фруктів 7. Змінні Яблука й Банани вставляються в текст, замінюючи фігурні дужки, разом із результатом математичної формули Яблука+Банани. Пробіли та інші символи навколо фігурних дужок залишаються без змін.

Вбудовані формули можуть містити будь-які функції або оператори. Слід пам’ятати, що результат формули можна привести до текстового рядка. Наприклад, ця формула вставить у привітання NickName, якщо надано, або FirstName, якщо ні:

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

Якщо для параметра NickName задано значення Joe, то ця формула створєю текстовий рядок Welcome Joe, it's great to meet you! (Вітаємо, Джо! Раді Вас бачити!) Але якщо для параметра NickName установлено пусте значення, а для FirstName – «Joseph», ця формула натомість створить привітання Dear Joseph, great to meet you! (Шановний Джозефе! Раді Вас бачити!)

Інтерполяція рядків може містити стандартні текстові рядки у вбудованій формулі. Наприклад, якщо для параметрів NickName і FirstName значення не надано, можна натомість запропонувати Друже:

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

Інтерполяції рядків навіть можуть бути вкладені. Розглянемо цей приклад, де Ім’я, По батькові та Прізвище об’єднано в привітанні. Навіть якщо одне або два значення пусті, між частинами імені буде правильна кількість пробілів. Якщо жодну з частин не вказано, внутрішня інтерполяція рядка згорнеться до пустого рядка, і її буде замінено функцією Coalesce на «Друже».

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Ім’я По середині Остання Результат
John Qunicy Doe Welcome John Quincy Doe!
John пусто Doe Welcome John Doe!
пусто пусто Doe Welcome Doe!
пусто пусто пусто Welcome Friend!

Символи нового рядка

Вбудовані текстові рядки можуть містити символи нових рядків. Наприклад, розглянемо встановлення властивості Текст елементу керування Надпис:

"Line 1
Line 2
Line 3"

Наведена вище формула створює три рядки, які відображаються в елементі керування надписом.

Вбудований елемент керування текстовим рядком і міткою, що показує три рядки з рядком 1, рядком 2 і рядком 3.

Крім того, для інтерполяції рядків підтримуються символи нових рядків, як показано нижче:

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

Наведена вище формула призводить до того самого результату:

Формула інтерполяції рядків і елемент керування мітками, що показують три рядки з рядком 1, рядком 2 і рядком 3.

Зображення і ресурси мультимедіа

За допомогою меню Файл можна додати зображення, відео та аудіофайли як ресурси програми. Ім’я імпортованого файлу перетворюється на ім’я ресурсу в програмі. На цьому малюнку логотип Northwind Trader, якому присвоєно ім’я nwindlogo, додано до програми:

Ресурс північного вітру.

Щоб використовувати цей ресурс у програмі, вкажіть його у властивості Зображення елемента керування Зображення:

Зображення північного вітру.

Ідентифікатори URI для зображень та інших медіафайлів

У наведеному прикладі можна піти далі та встановити для властивості Текст елементу керування Надпис значення nwindlogo. У надписі відображається текстовий рядок:

Текст північного вітру.

Компоновані програми виконують перенаправлення за посиланнями у вигляді текстового рядка URI на будь-які зображення чи інші медіафайли незалежно від того, знаходяться вони у хмарі або ж додані як ресурс програми.

Наприклад, властивості Зображення елементу керування «зображення» можна присвоїти не тільки ресурси програми, але й посилання на зображення в Інтернеті, як-от https://northwindtraders.com/logo.jpg". Крім того, цій властивості можна присвоїти вбудовані зображення, які використовують схему URI даних, як у наведеному нижче прикладі:

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

Такий ідентифікатор URI відображає збільшений варіант двох пурпурових діамантів:

Подвійні діаманти.

На екрані можна відображати останнє зображення, зроблене елементом керування Камера якщо властивості Зображення елементу керування присвоїти значення властивості Фото елементу керування «камера». Програма зберігає зображення у пам’яті, а властивість Фото елементу керування «камера» повертає посилання URI на зображення. Наприклад, можна зробити фото, і властивість Фото камери поверне значення "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Для створення посилання на зображення чи інший медіафайл, що зберігається у базі даних, використовується URI. Таким способом програма фактично не одержує дані, поки вони дійсно не стануть необхідні. Наприклад, вкладення в таблиці Microsoft Dataverse може повертати «appres://datasources/Contacts/table/...» Як у прикладі камери, це зображення можна відобразити, установивши для властивості зображення елемента керування зображенням на це посилання, яке отримуватиме двійкові дані.

Під час збереження у базі даних мультимедійних даних, таких як зображення, програмою надсилається справжнє зображення або мультимедійні дані, а не посилання URI.

Обмеження розміру

Як і текстові рядки та ідентифікатори URI, ці типи даних не мають визначеного обмеження довжини.

Двійкові дані, на які посилаються ці типи даних, також не мають визначеного обмеження розміру. Наприклад, фотографія, зроблена за допомогою елементу керування "камера", яка наразі визначається посиланням "appres://..." може мати такий максимальний розмір та роздільну здатність, які здатна забезпечити апаратура камери. Роздільна здатність, частота кадрів та інші параметри медіафайлів не обмежуються типом даних, але деякі елементи керування, призначені для відображення та отримання мультимедіа, можуть мати власні обмеження.

Однак, розмір будь-яких даних не може перевищувати обсягу виділеної для програми пам’яті. Зазвичай браузери, які працюють на настільному комп’ютері, підтримуються не більше ніж 100 МБ даних. Проте, обсяг доступної на такому пристрої, як телефон, пам’яті може бути значно меншим і зазвичай становити 30–70 МБ Щоб визначити, чи працюватиме програма в цих межах, слід перевірити поширені сценарії на всіх пристроях, на яких вона має виконуватися.

Рекомендується зберігати дані в пам'яті лише за потреби. Завантажуйте зображення до бази щойно зможете; завантажувати зображення потрібно тільки тоді, коли користувач програми запитує їх.

Номери

Нотатка

Power Apps сьогодні підтримує лише Float і є типом усіх чисел. Незабаром буде додано підтримку десяткових дробів .

Power Fx підтримує два види чисел: десяткові та плаваючі (з синонімами Число та Валюта ).

Десятковий дріб найкраще підходить для більшості бізнес-розрахунків. Він може точно представляти числа з основою 10, тобто це 0.1 може бути точно представлено і не буде схильний до помилок округлення під час обчислень. Він має досить великий діапазон для будь-яких бізнес-потреб, до 1028 з точністю до 28 цифр. Десятковий — це типовий числовий тип даних для більшості Power Fx вузлів, який використовується для простого запису 2*2.

Поплавок найкраще підходить для наукових розрахунків. Він може представляти числа в набагато більшому діапазоні, до 10308. Точність обмежена 15 знаками після коми, а математика базується на основі 2, тому вона не може точно представити деякі загальні десяткові значення. Float також має вищу продуктивність, і йому віддають перевагу, якщо це фактор, а точність не є критичною.

Десяткові числа

У типі даних Decimal найчастіше використовується десятковий тип даних .NET. Деякі хости, наприклад Dataverse стовпці формул, які запускаються в SQL Serer, використовують десятковий тип даних SQL Server.

Десятковий дріб робить математику так, як ви вчили в школі, використовуючи 10 цифр. Це дуже важливо для уникнення помилок округлення через дуже малі відмінності, які можуть накопичуватися при використанні математики з основою 2 (як використовується Float).

Діапазон від позитивного 79,228,162,514,264,337,593,543,950,335 до негативного 79,228,162,514,264,337,593,543,950,335. Десятковий роздільник можна розмістити в будь-якому місці цих чисел, забезпечуючи точність до 28 цифр, і при цьому бути точно представленим. Наприклад, 79,228,162,514,264.337593543950335 може бути точно представлений, як і 7.9228162514264337593543950335.

Числа з плаваючою комою

Тип даних з плаваючою комою, також відомий як «Число» або « Грошова одиниця », використовуєстандарт IEEE 754 з плаваючоюкомою подвійної точності. Цей стандарт надає дуже великий діапазон чисел для роботи –від 1.79769 x 10308 до 1.79769 x 10308. Найменше значення, яке можна представити, становить 5 x 10–324.

Float може точно представляти цілі числа (або цілі числа) між –9,007,199,254,740,991 (–(253–1)) та 9,007,199,254,740,991 (2 53 –1) включно. Цей діапазон більший, ніж 32-розрядні типи даних «ціле число» (або 4-байтові), які зазвичай використовуються в базі даних. Проте компоновані програми не можуть представляти 64-бітні (або 8-байтові) типи даних «ціле число». Можливо, вам буде потрібно зберегти число в текстовому полі чи використовувати обчислюваний стовпець, щоб зробити копію числа в текстовому полі, щоб воно відображалось в типі даних Текст у компонованій програмі. Таким чином можна зберігати, відображати та вводити ці значення, а також порівняти їх для того, щоб визначити, чи є вони рівними; однак в цій формі не можна виконувати числові обчислення.

Арифметика з рухомою комою є приблизною, тому іноді вона може давати неочікувані результати з багатьма документованими прикладами. Можна очікувати, що формула 55/100 * 100 поверне точно 55 і (55/100 * 100)-55 поверне точно нуль. Проте, остання формула повертає 7,1054 x 10–15, що становить дуже мало, проте не нуль. Це незначна різниця зазвичай не викликає проблем, і програма заокруглює її під час відображення результату. Проте дрібні відмінності можуть накопичуватися в подальших розрахунках і очевидно давати неправильну відповідь.

Системи баз даних часто зберігають грошові одиниці та виконують обчислення з точністю до десятого знаку після коми, що забезпечує менший діапазон, але більший контроль над точністю. За замовчуванням компоновані програми використовують грошові одиниці з плаваючою комою, відповідно, результат може відрізнятися від розрахунків, виконаних у власному десятковому типі даних. Якщо цей тип невідповідності призведе до проблем, можливо, ви захочете працювати з цими значеннями як з текстом, як може бути з великими цілими значеннями, описаними раніше в цьому розділі.

Параметри за умовчанням і конверсії

Нотатка

Power Apps сьогодні підтримує лише Float і є типом усіх чисел. Незабаром буде додано підтримку десяткових дробів .

Більшість Power Fx хостів за замовчуванням використовують десяткову систему . Це впливає на:

  • Буквені числа у формулах. Число 1.234 буде інтерпретовано як десяткове значення. Наприклад, формула 1.234 * 2 інтерпретує і 1.2342 як десятковий дріб і повертає десятковий результат.
  • Функція значення. Value( "1.234" )поверне десяткове значення. Наприклад, формула Value( "1.234" ) * 2 функція Value інтерпретує вміст текстового рядка "1.234" як десятковий.

Для роботи зі значеннями Float використовується функція Float . Розширюючи наведений вище Float( 1.234 ) приклад, ми перетворимо десятковий дріб1.234 у число з плаваючою комою. Float також можна використовувати як заміну значення для перетворення рядка, що містить число з плаваючою комою, наприклад Float( "1.234" ) , на число з плаваючою комою, яке потрібне, якщо число не може бути представлено як десяткове число.

Підсумовуючи:

Використання Десятковий Плавати
Буквені числа у формулах 1.234 Float( 1.234 )
Float( "1.234" )
Перетворення з текстового рядка Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Перетворення між числовими типами Decimal( float ) Float( decimal )
Перетворення в текстовий рядок Text( decimal ) Text( float )

Змішування числових типів

Числа з плаваючою та десятковою системою можна вільно змішувати. При змішуванні десяткові значення перетворюються на значення з плаваючою точкою через більший діапазон. Оскільки це може призвести до втрати точності, важливо не змішувати їх без потреби. Оскільки Decimal є типом даних за замовчуванням і більшість числових функцій збережуть цей тип, відносно легко уникнути переходу до Float без бажання.

Наприклад, розглянемо наступний розрахунок після pac power-fx repl встановлення інтерфейсу Power Platform командного рядка. Оскільки обидва числа є десятковими, обчислення виконується вдесятковій системі, і результат зберігає повну точність:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Якщо замість цього другий операнд змінити на Float, то всі обчислення будуть виконані в Float , а крихітна дробова частина буде втрачена:

>> 1.0000000000000000000000000001 * Float(2)
2

Дата, час і Дата/час

Часові пояси

Значення дати й часу підпадають під зазначені нижче категорії.

  • Місцевий час: ці значення зберігаються в UTC (Всесвітній координований час), але часовий пояс користувача програми впливає на те, як програма відображає ці значення і як користувач програми вказує їх. Наприклад, цей самий момент відображається по-різному для користувача в Канаді і користувача в Японії.
  • Незалежний часовий пояс : програма показує ці значення однаково, а користувач програми задає їх точно так само, незалежно від часового поясу. Цей самий момент відображається однаково для користувача в Канаді і користувача в Японії. Автори програм, які не очікують, що їхні програми будуть працювати в різних часових поясах, використовують ці значення, оскільки вони загалом простіші.

У цій таблиці наведено кілька прикладів.

Тип дати/часу Значення, яке зберігається в базі даних Значення, яке відображається і вводиться 7 годин на захід від UTC Значення, яке відображається і вводиться 4 годин на схід від UTC
Місцевий час Неділя,19травня2019 року
04:00
Субота,18травня2019 року
21:00
Неділя,19травня2019 року
08:00
Незалежний часовий пояс Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04:00

Для дати/часу Місцевий час компоновані програми використовують часовий пояс браузера або пристрою, але програми на основі моделі використовують настройки користувача в Dataverse. Ці параметри зазвичай збігаються, але результати відрізнятимуться залежно від того, чи відрізняються ці параметри.

Скористайтеся функціями DateAdd і TimeZoneInformation для перетворення місцевого часу у UTC і назад. Ознайомтеся з прикладами в кінці документації для цих функцій.

Числові еквіваленти

Компоновані програми зберігають і обчислюють значення дати/часу незалежно від того, чи це Місцевий час або Незалежний часовий пояс у форматі UTC. Програма переводить значення на основі часового поясу користувача програми під час їх відображення або коли їх зазначає користувач.

Коли компонована програма зчитує значення Незалежний часовий пояс з джерела даних або записує це значення в джерело даних, програма автоматично коригує значення, щоб компенсувати часовий пояс користувач програми. Потім програма обробляє значення як значення UTC, відповідно до всіх інших значень дати й часу в програмі. Завдяки такій компенсацій вихідне значення Незалежного часового поясу з'являється, коли програма регулює значення UTC для часового поясу користувача програми.

Цю поведінку можна зробити більш тісно, скориставшись функцією Value, щоб отримати доступ до базового числового значення для значення «Дата й час». Ця функція повертає значення дати й часу як кількість мілісекунд з 1 січня 1970 року 00:00:00.000 UTC.

Оскільки кожне значення дати й часу зберігається в UTC, формула Value( Date( 1970, 1, 1 ) ) не повертатиме нуль у більшості регіонів світу, оскільки функція Date повертає дату в UTC. Наприклад, формула поверне 28 80 ,000 в часовий пояс, який зміщений від UTC на вісім годин. Це число відображає кількість мілісекунд у восьми годинах.

Повертаючись до нашого прикладу вище:

Тип дати й часу Значення, яке зберігається в базі даних Значення, яке відображається і вводиться 7 годин на захід від UTC Функція Value повертає
Місцевий час Неділя,19травня2019 року
04:00
Субота,18травня2019 року
21:00
1,558,238,400,000
(Неділя,19травня2019 року
4:00 AM UTC)
Незалежний часовий пояс Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04:00
1,558,263,600,000
(Неділя,19травня2019 року
11:00 AM UTC)

Перетворення часу в Unix

Час Unix відображає кількість секунд, починаючи з 1 січня 1970 року 00:00:00 UTC. Оскільки компоновані програми використовують мілісекунди замість секунд, їх можна конвертувати, помноживши чи поділивши на 1000.

Наприклад, час Unix показує 9 вересня 2001 року, 01:46:40 UTC як 1,000,000,000. Щоб показати таке значення дати й часу в компонованій програмі, помножте це число на 1000, щоб перетворити його в мілісекунди і потім використовувати у функції Text. Формула Text( 1000000000 * 1000, DateTimeFormat.UTC ) повертає рядок 2001-09-09T01:46:40.000Z.

Однак, ця функція повертає значення Субота, 8 вересня 2001 року, 18:46:40 якщо використовувати формат DateTimeFormat.LongDateTime24 у часовому поясі, який на 7 годин зміщений від UTC (7 один на захід від UTC). У цьому результаті значення DateTime відображається правильно на основі місцевого часового поясу.

Щоб перетворити значення в час Unix, розділіть результат Значення на 1000.
RoundDown( Value( UnixTime ) / 1000, 0 )

Якщо потрібен час Unix у значенні Дата для подальших розрахунків або відображення в Power Apps,використовуйте цю формулу:
DateAdd (дата (1970, 1, 1), UnixTime, секундах)

SQL Server

У SQL Server є Datetime, Datetime2 та інші типи даних дати й часу, що не включають зміщення часового поясу і не вказують, в якому часовому поясі вони використовуються. Компоновані програми припускають, що ці значення зберігаються в UTC і обробляють їх як Місцевий час. Якщо ці значення мають бути незалежним часовим поясом, використовуйте для виправлення даних UTC функцію TimeZoneOffset.

Компоновані програми використовують інформацію про часовий пояс у полях Datetimeoffset під час перетворення значення у внутрішнє представлення UTC програми. У програмах під час запису даних як часовий пояс завжди використовується UTC (нульовий часовий пояс).

Компоновані програми зчитують/записують значення типу Час з/на SQL Server як текстові рядки у форматі тривалості ISO 8601. Наприклад, потрібно проаналізувати рядковий формат та застосувати функцію Time, щоб перетворити текстовий рядок "PT2H1M39S" на значення Час:

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)

Поєднання інформації про дату і про час

Дата, Час і Дата і час мають різні назви, але зберігають однакові відомості про дату та час.

Значення Дата може містити у собі відомості про час, який зазвичай приймається 00:00. Значення Час може передавати відомості про дату, яка зазвичай відповідає 1 січня 1970 року Dataverse також зберігає інформацію про час у полі Лише дата, але за замовчуванням відображаються тільки відомості про дату Водночас компоновані програми інколи розрізняють ці типи даних для визначення форматів та елементі керування за замовчуванням.

Не рекомендується виконувати додавання та віднімання значень типу дати й часу без попереднього перетворення, оскільки перетворення часових поясів та інші конвертації можуть обумовити неправильні результати. Рекомендується спочатку використати функцію Value для перетворення значень типу дата/час до мілісекунд та врахувати часовий пояс користувача програми, або скористатися функціями DateAdd і DateDiff для додавання або віднімання таких значень.

Вибір і «Так/Ні»

Вибір і типи даних із двома параметрами дають можливість вибрати два або більше варіантів для користувача програми. Наприклад, параметр вибору Стан замовлення може пропонувати варіанти Створено, Відправлено, Виставлено рахунок і Закрито. Значення типу двох варіантів надає тільки два варіанти на вибір.

Для обох типів даних відображаються написи у контекстному текстовому рядку. Наприклад, елемент керування надписом показує один із параметрів стану замовлення, якщо властивість «Текст» елемента керування має формулу, яка посилається на вибраний вибір. Надписи параметрів можуть розміщуватися для користувачів програми у різних місцях.

Коли користувач програми вибирає параметр і зберігає відповідну зміну, дані передаються програмою у базу даних, де вони зберігаються у незалежному від мови форматі. Параметр у виборі передається та зберігається як число, а параметр у двох типах даних передається й зберігається як логічне значення.

Надписи використовуються тільки для відображення. Виконувати порівняння написів не можливо, оскільки вони залежать від мови. Натомість, для кожного вибору є нумерація, яка працює з відповідними числами або логічними значеннями. Наприклад, не можна використати таку формулу:

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

Але можна використати таку:

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

Для глобального вибору (які таблиці поширюються) назва перерахування набору параметрів збігається з іменем глобального вибору. Для локального вибору (області застосування до таблиці) ім'я може містити ім'я таблиці. Така поведінка дозволяє уникнути конфліктів, якщо в кількох таблицях є вибір з однаковим ім'ям. Наприклад, таблиця Бізнес-партнери може мати вибір OrderStatus, а її ім'я може бутиOrderStatus (Accounts). Це ім’я складається з пробілів та дужок, тому в разі згадування його у формулі таке ім’я потрібно обрамити одинарними лапками.

Крім того, значення типу двох варіантів можуть також використовуватися логічні значення. Наприклад, значення типу двох параметрів з ім’ям TaxStatus може мати надписи Taxable і Non-Taxable, що стосуються true і false відповідно. Для демонстрації можна використати таку формулу:

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

Можна також використати еквівалентну формулу:

If( ThisItem.Taxable, ...