如果以后涉及到时间计算的话,还是用datetime比较方便,可以利用sql自带的很多函数
你可以这样update
update tablename
set 时间字段=convert(varchar(11),时间字段,120)+'15:03:46'

解决方案 »

  1.   

    同意happydreamer(卖女孩的小火柴) 的说法,
      

  2.   

    谢谢happydreamer,按你的写法可以了,而且取出的时间也可以进行大小比较。
    但我不是很明白,convert后的120参数是什么style?转成varchar后为什么不再插入年月了?
    谢谢
      

  3.   

    使用 CONVERT:CONVERT (data_type[(length)], expression [, style])参数
    expression是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。 data_type目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 lengthnchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。 style日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。不带世纪数位(yy) 带世纪数位 (yyyy)  标准    输入/输出** 
    -                 0 或 100 (*)      默认值  mon dd yyyy hh:miAM(或 PM) 
    1                 101               美国    mm/dd/yyyy 
    2                 102               ANSI    yy.mm.dd 
    6                 106               -       dd mon yy 
    7                 107               -       mon dd, yy 
    8                 108               -       hh:mm:ss 
    -                 9 或 109 (*)  默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
    10                110           美国         mm-dd-yy 
    12                112           ISO          yymmdd 
    -                 20 或 120     (*)          ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff] 
    -                 21 或 121    (*)  ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff] *    默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
    ** 当转换为 datetime 时输入;当转换为字符数据时输出。
    *** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。