您看到这种差异的原因是,查询字符串解析器正在使用支持这种格式的 .Net 库解析第二个查询中的常量值,而查询引擎正在评估第一个表达式,即使用不同的库,这些库支持here指定的日期时间格式。
这里是这个问题的解决方法,很可能这可以写得更简单:
let GetMonthNumber = view(Month:string){
case(
Month=="January", "01",
Month=="February", "02",
Month=="March", "03",
Month=="April", "04",
Month=="May", "05",
Month=="June", "06",
Month=="July", "07",
Month=="August", "08",
Month=="September", "09",
Month=="October", "10",
Month=="November", "11",
Month=="December", "12",
"-1" // default case is an error
)};
let x = "July, 2021";
let dateparts = split(x, ",");
let calculatedTime = strcat(replace_string(tostring(dateparts[1]), " ", ""),"-", GetMonthNumber(tostring(dateparts[0])), "-01");
print todatetime(calculatedTime)
| print_0 |
| 2021-07-01 00:00:00.0000000 |