问题描述
我正在查询Odata V2服务。实体Foo具有类型为Edm.String的属性Bar。 Bar是毫秒时间,可悲的是,它被定义为字符串。例如。 “ 1597091642312”。
如何查询Foo的结果,其中Bar仅在特定时间点之后?
我试图像这样投射:
/Bar?$filter=cast(Foo,Edm.Int64) gt 631148400000
但是我得到:
特别是'5'对我来说没有意义。
提供的服务是SAP CAP CDS模拟服务,使用V4到V2代理。
解决方法
好吧,看来您可以这样做:
/Bar?$filter=Foo gt '631148400000'
并且不需要强制转换。我假设gt是按字母数字方式应用的,如果以数字方式应用它具有相同的效果?
但是,当使用时间戳631148400000时,我没有得到任何结果(这将我推向String的问题)。我确实获得了具有最近时间戳记的结果(在2019年或2020年)。
我不确定这是Odata V2问题还是SAP CDS模拟服务问题。