有没有办法将varchar列索引为日期时间?

Bil*_*zke 3 t-sql sql-server sql-server-2005

我正在查询包含所有有效日期时间的varchar列.在查询中,我将列转换为datetime.

请记住,将列的数据类型定义更改为datetime不是一个选项.只相信我,这不是一个选择.

通过查询分析,我发现如果我可以在此列上添加索引,查询会更快.但它是varchar.如果我添加了一个索引,它会根据它的varchar值进行索引,对吧?但我希望它能在日期时间值上编制索引,是吗?

我可以在这里为索引做些什么吗?

OMG*_*ies 6

有效数据是第一优先级,因为任何将数据转换为DATETIME的方法都将返回1900年1月1日午夜时的值,此值与可接受的格式不匹配.

SQL Server没有基于函数的索引,因此您的选项是:

  1. 一个计算列,假设您可以使用ALTER TABLE语句向表中添加列.您可以在此之后索引此列.
  2. 一个索引视图(AKA物化视图),假设你的数据是否符合要求
  3. 从原始文件克隆的临时表(如果您愿意,可以进行调整),从现有表中导入数据,以便对其进行索引和操作