大家好,
我正在尝试将 SQL 表中的今天结果过滤到 powerapps 中的集合。“dt”列代表sql中datetime类型的列。
这是我的 powerapps 过滤器:
ClearCollect(myCollectionName, Filter(myDatasource, Text(dt,"dd/mm/yyyy") = Text(Now(),"dd/mm/yyyy" )));
即使sql中有今天的数据,似乎集合仍然是空的。我可以知道我的方法是否是过滤的正确方法吗?
大家好,
我正在尝试将 SQL 表中的今天结果过滤到 powerapps 中的集合。“dt”列代表sql中datetime类型的列。
这是我的 powerapps 过滤器:
ClearCollect(myCollectionName, Filter(myDatasource, Text(dt,"dd/mm/yyyy") = Text(Now(),"dd/mm/yyyy" )));
即使sql中有今天的数据,似乎集合仍然是空的。我可以知道我的方法是否是过滤的正确方法吗?
简短的回答:数据可能会根据客户端时区进行更改。要修复它,您可以通过将时区偏移量应用于 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 中使用日期/时间值。