我有一个TEXT类型的列'值'。它可以包含常规文本,也可以包含字符串格式的日期。我用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
由于
答案 0 :(得分:1)
这里有两种方法...... 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
列包含其他而非日期的情况。或者也许值得将这些日期值拉到一个单独的列中以获得更一致的数据? (我知道,在不知道应用程序的完整环境的情况下很容易建议。)