0

大家好,

我正在尝试将 SQL 表中的今天结果过滤到 powerapps 中的集合。“dt”列代表sql中datetime类型的列。

这是我的 powerapps 过滤器:

ClearCollect(myCollectionName, Filter(myDatasource, Text(dt,"dd/mm/yyyy") = Text(Now(),"dd/mm/yyyy" )));

即使sql中有今天的数据,似乎集合仍然是空的。我可以知道我的方法是否是过滤的正确方法吗?

4

1 回答 1

0

简短的回答:数据可能会根据客户端时区进行更改。要修复它,您可以通过将时区偏移量应用于 SQL 表中的数据来更新它,类似于以下内容:

ClearCollect(
  myCollectionName,
  Filter(
    myDatasource,
    Text(DateAdd(dt, TimeZoneOffset(dt), Minutes), "dd/mm/yyyy") =
        Text(Now(), "dd/mm/yyyy")))

Long(er) 答案:SQL Server 中的 datetime 类型表示date 和 time 的绝对值。例如,值“2021-12-23 09:30:00”表示 2021 年 12 月 23 日上午 9:30 - 在世界任何地方。但是,Power Apps 中的日期/时间类型表示一个时间点,通常指的是应用程序正在执行(或创建)的本地时间。例如,如果我选择了该值并且我在美国太平洋时区 (UTC-08:00),则表示的值与伦敦 (UTC+00:00) 中的某人选择 2021-12-23 的值相同17:30:00。由于这两种类型代表不同的概念,因此我们可能会遇到您所面临的不匹配情况。要解决此问题,我们可以在 SQL Server 中使用与 Power Apps 具有相同语义的类型(例如,“datetimeoffset”),或者调整在 SQL 和 Power Apps 之间传输的时间。

https://powerapps.microsoft.com/en-us/blog/working-with-datetime-values-in-sql上的博客文章更详细地解释了如何在 SQL 和 Power Apps 中使用日期/时间值。

于 2022-01-11T19:39:31.293 回答