当前位置: 首页 > 知识库问答 >
问题:

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

柯乐童
2023-03-14

下面是我所做工作的简要概述:我们目前正在将事件从一个节点存储到Azure表存储中。js云服务使用“azure存储”npm模块。我们将这些事件的时间戳存储在存储器中(而不是使用Azure定义的时间戳)。

现在,我们已经编写了一个通用的存储处理程序脚本,目前只将所有值存储为字符串。为了节省重构这个脚本的时间,我希望有一种方法来调整查询。

所以,我的问题是,如果存储的值实际上不是datetime字段,而是字符串,是否可以按datetime进行查询?

我最初的查询包括以下内容:

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

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

你想做下面的工作吗,或者最好的方法是什么?

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

共有1个答案

上官波鸿
2023-03-14

好的,如果Azure表中的属性类型是String,则无法将其转换为DateTime。因此,您将无法使用。其中(“_timestampge datetime'?”,时间戳)

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

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

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

 类似资料:
  • 问题内容: 我遇到了一个在Hibernate和MySql中使用UUID的博客。现在的问题是,每当我查看数据库时,ID的格式都是不可读的(二进制16)。如何将UUID存储为可读格式,而不是 我正在使用此代码 结果是 ¡7ôáßEN¹º}ÅÑs 。但是我希望它是可读的UUID,所以我使用了以下代码,但对我没有帮助 如何在不更改Java类型UUID的情况下将UUID保存为字符串而不是二进制(16) 问题

  • 我有以下命名查询: 当我尝试按如下方式执行时: 然后我得到以下例外: JAVAlang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称从Userdetails u中选择u,其中u.username=:username来设置参数值。 这是怎么造成的,我该如何解决?

  • 我试图使用rest API从azure数据表中检索数据。 Api错误已输出,数据无效。 如果我同时添加RowKey和PartitionKey,就像下面这样。它起作用了。 是否需要通过行键? 如果我只想从一个分区检索所有数据。我知道,我们可以在查询参数中添加一个$filter,但这不会导致性能问题吗? 请分享你的想法。 谢谢!

  • 我对使用Solr是新手,我制作了一个新的核心并复制了默认的模式。xml到conf文件夹。我所做的更改非常微不足道。 如您所见,我将字段设置为存储=false。根据我的理解,现在进行查询搜索时不应该显示字段。但这没有发生。我尝试重新启动solr实例,并再次进行查询以索引文件。 根据Solr Wiki,这应该已经为我的文件重新编制了索引。但是,当我再次运行查询时,仍然可以看到Id。 返回的文档示例(这

  • 是否需要其他数据来生成ConnectionString?

  • 问题内容: 我有以下简单的elastisearch查询: 而且效果很好 现在,我尝试按anio desc订购。我尝试了所有这些选项: 但是他们似乎都不起作用 我该如何实现?(理想情况下,从查询字符串开始,而不必使用更复杂的查询) 问题答案: 尝试sort = anio:desc。 有关参数列表,请参见 search API- uri请求 。