我现在有一个排序字段 格式是200501020101111
是 年月日分秒毫秒来的 还是nvarchar字段 总共15位 太长了 而且索引速度不理想 我现在想把他变成一个6位数的数值 但不能相同 本来我设计的算法是 年*10+月*10+日*10 等等 但算下来不对有重复值 所以希望大家帮我想个算法 而且这算下来的数值要按照时间来排序的

解决方案 »

  1.   

    --这种字段值满足需求吗?(每天一组数据)
    select cast(convert(varchar(10),getdate(),112) as int)
      

  2.   

    --这种字段值满足需求吗?(每天一组数据)
    select cast(convert(varchar(10),getdate(),112) as int)
    ---------------
    我要精确到秒 而且要6位 因为表里记录 差不多10万条记录
      

  3.   

    1、6位的数值绝对不可能。2、年月日可以转为int然后再转为16进制数,取有效字符存放在4个字节的CHAR类型中;
       至于时、分、秒、毫秒,保存起来2个字节肯定不够。
      

  4.   

    还是老老实实用datetime吧datetime做索引效果不错的
      

  5.   

    6位可能太短
    最简单 select identity(int,1,1) a,你的字段 into 表1 from 你的表 order by 你的字段
    即可生成一对应你字段的表