思芬克斯字符串日期属性

Thinking sphinx string date attribute

我有一个 TEXT 类型的列 'value'。它可以包含常规文本,也可以包含字符串格式的日期。我用 indexes value 索引该列。我还可以添加一个将此列转换为整数的属性吗?我尝试了以下两种方法:

has "str_to_date(model.value, '%Y-%m-%d')", as: :value_as_date, type: :integer
has "CONVERT(model.value, DATETIME)", as: :value_as_date, type: :integer

谢谢

这里有两种方法...Sphinx 具有用于属性的时间戳(日期时间)数据类型,因此您可以使用它:

has "CONVERT(model.value, DATETIME)", as: :value_as_date, type: :timestamp

或者,通过从字符串中提取日期,然后将 %Y%m%d值转换为整数(注意,日期格式中没有连字符)。

has "... more complex SQL snippet ...", as: :value_as_date, type: :integer

在这种情况下,您还需要将过滤器的任何日期也转换为相同格式的整数。

除此之外:您需要在 SQL 片段中添加一些内容来处理您的 value 列包含 其他 内容的情况一个约会。或者也许值得将这些日期值拉出到一个单独的列中以获得更一致的数据? (我知道,在不知道您的应用程序的完整上下文的情况下很容易提出建议。)