如何过滤含空格的列名及字符串格式的时间戳字段?
解决带空格字段过滤与字符串时间戳查询问题
一、过滤名称含空格的列
你之前的查询写法有误,方括号里不该包含c.前缀,正确的引用带空格字段的方式是**c["字段名"]**:
正确查询语句
SELECT * FROM c WHERE c["Request Status"] = "New"
部分查询语法也支持用反引号包裹字段名:
SELECT * FROM c WHERE c.`Request Status` = "New"
你之前写的["c.Request Status"]是把整个字符串当作数组索引,自然匹配不到数据;直接写c.Request Status会因为空格被解析成两个独立语法元素,导致报错。
二、过滤字符串格式的Timestamp值
由于你的时间是字符串格式(如"7/23/2020 12:31:05 PM"),需要先转换为日期时间类型再做条件判断,以下是通用示例:
示例1:过滤指定日期之后的数据
SELECT * FROM c WHERE DateTime.Parse(c["Created Date"]) > DateTime.Parse("7/20/2020 12:00:00 AM")
示例2:过滤单日范围内的数据
SELECT * FROM c WHERE DateTime.Parse(c["Created Date"]) BETWEEN DateTime.Parse("7/23/2020 00:00:00 AM") AND DateTime.Parse("7/23/2020 11:59:59 PM")
注:不同查询引擎的日期转换函数可能不同(比如部分用TO_DATE()),核心逻辑都是先将字符串转为日期类型再做比较。
内容的提问来源于stack exchange,提问作者Milo Ulver
相关产品推荐
相关产品推荐

