在使用 Azure Table 存储的 WCF 查询中将字符串字段强制为 DateTime

Forcing a string field to DateTime in WCF query with Azure Table Storage

所以,快速概述一下我在做什么: 我们目前使用 "azure-storage" npm 模块将事件从 Node.js 云服务存储到 Azure Table 存储。我们将自己的时间戳存储在存储中(而不是使用 Azure 定义的时间戳)。

现在,我们编写了一个通用存储处理程序脚本,该脚本目前仅将所有值存储为字符串。为了节省重构此脚本,我希望有一种方法可以改为调整查询。

所以,我的问题是,是否可以按日期时间查询,其中存储的值实际上不是日期时间字段而是字符串?

我的原始查询包括以下内容:

.where( "_timestamp ge datetime'?'", timestamp );

在上面的代码中,我需要以某种方式让查询将 _timestamp 视为日期时间而不是字符串...

像下面这样的东西会起作用吗?或者最好的方法是什么?

.where( "datetime _timestamp ge datetime'?'", timestamp );

据我所知,如果 Azure Table 中的属性类型是 String,则无法将其转换为 DateTime。因此您将无法使用 .where( "_timestamp ge datetime'?'", timestamp );

如果您以 yyyy-MM-ddTHH:mm:ssZ 格式存储 _timestamp,那么您可以简单地执行一个基于字符串的查询,例如

.where( "_timestamp ge '?'", timestamp );

除了此查询将进行完整 table 扫描并且不是优化查询之外,这应该可以正常工作。但是,如果您以其他格式存储,您可能会得到不同的结果。