如何在Odata V2中将类型为Edm.String的属性转换为数字

问题描述

我正在查询Odata V2服务。实体Foo具有类型为Edm.String的属性Bar。 Bar是毫秒时间,可悲的是,它被定义为字符串。例如。 “ 1597091642312”。

如何查询Foo的结果,其中Bar仅在特定时间点之后?

我试图像这样投射:

/Bar?$filter=cast(Foo,Edm.Int64) gt 631148400000

但是我得到:

不支持功能:$ filter或$ orderby查询选项中的表达式“ 5”

特别是'5'对我来说没有意义。

提供的服务是SAP CAP CDS模拟服务,使用V4到V2代理。

解决方法

好吧,看来您可以这样做:

/Bar?$filter=Foo gt '631148400000'

并且不需要强制转换。我假设gt是按字母数字方式应用的,如果以数字方式应用它具有相同的效果?

但是,当使用时间戳631148400000时,我没有得到任何结果(这将我推向String的问题)。我确实获得了具有最近时间戳记的结果(在2019年或2020年)。

我不确定这是Odata V2问题还是SAP CDS模拟服务问题。