为此,我创建了一个udf来应用日期过滤器,
Convert TimeScript to Date in Azure CosmosDB SQL Query。
从c中选择udf.convertTime(c.DatetimeEpoch)作为CommandDate,其中c.columnH ='acb' 和c.CommandDate = '09 / 21/2019',
但是当我将udf放在where子句中时,此查询不起作用。
答案 0 :(得分:0)
我认为@Unicorno Marley清楚地解释了为什么您的sql无法正常工作。
您可以如下修改您的sql:
SELECT udf.convertTime(c.DatetimeEpoch) as CommandDate FROM c where c.columnH='acb' and udf.convertTime(c.DatetimeEpoch) = '09/21/2019'
编辑:您现在可以使用子查询来避免重复执行UDF
SELECT s.CommandDate
FROM (
SELECT udf.convertTime(c.DatetimeEpoch) AS CommandDate
FROM c
where c.columnH = 'acb'
) s
WHERE s.CommandDate = '09/21/2019'
理想情况下,尽管应该执行此映射客户端而不是服务器端UDF,因为WHERE子句中的UDF筛选器将是扫描。
答案 1 :(得分:0)
在CosmosDb中,您不能在where子句中使用别名CommandDate,这与MSSQL不同。您必须在@Tony Ju回答的where子句中再次重复udf。