sql中没有纯的time类型所以你要么用datetime字段,在取数据的时候,用 convert(varchar,time字段,112) 得到时间部分要么改用字符型字段来存储.

解决方案 »

  1.   

    你的字段肯定要包括日期和时间的
    你不输入日期的情况下,默认就是1900-1-1你用SELECT出来的时候只显示时间旧可以了
    SELECT CAST(DATAPART(hh,puretime) AS VARCHAR(2)) +
           ':' +
           CAST(DATAPART(MM,puretime) AS VARCHAR(2)) +
           ':' +
           CAST(DATAPART(SS,puretime) AS VARCHAR(2)) +
      

  2.   


    convert(varchar(8),puretime,108) 
      

  3.   

    表里保存的都是2004-01-01 00:00:00的形式,你select 出来该字段时,可以用convert转换出你需要的格式!
      

  4.   

    楼上说的都对。
    如果直接用sql客户端工具,在表格里填写"12:12:12"并不是不带
    年月日存储,你用CONVERT(varchar(20), 字段名, 120)看一下,实际是
    1899-12-30 12:12:12.
      

  5.   

    ok,谢谢各位高手。我刚才也做了测试,大致得出这样的结果,纯属个人猜测。
    当使用sql语句填写datetime类型的字段时,若只给出时间,sql语句解释器(分析sql语句的模块,我也不知道怎么称呼它)会自动加上默认时间1900-1-1。
    当使用sql客户端的表格工具填写datetime类型的字段时,若只给出时间,该表格工具,会在生成
    sql语句前,写进行类型检查,当发现datetime类型字段只有时间,没有日期时,就
    加上sql客户端使用的默认时间1899-12-30(为什么不是31,不知道微软怎么想的),然后再
    更新数据库,而sql语句解释器,发现正常datetime填写方式,也就不会去加它的1900-1-1默认时间了。在使用sql客户端填写datetime字段时,若是只写时间,则使用1899-12-30进行日期默认存储,并且不在界面上反映出来,反之,若填写1899-12-30作为日期信息,则该段信息会在表格上消失
    ,因为按照1899-12-30这样的默认日期时不需要现实的。说了这么多,纯属个人见解,贻笑大方了,呵呵。