没关系的,其实smalldatetime中存储的只是一个和1900-1-1 0;00:00 的整数偏移量(smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。),要取的时候直接取DATEPART ( hh , date ) +DATEPART ( mi, date )

解决方案 »

  1.   

    数据库中不用管1900-1-1,在你取值show到界面上的时候,format一下就可以了。
      

  2.   

    没有办法,你要不就用字符类型来存储,要不就:
    declare @a datetime
    set @a='23:21:38'select @a 它会自己加上1900select convert(char(8),@a,108) 但你可以在显示的时候去掉
      

  3.   

    是的,只取用份用datepart(month,date)就行了
      

  4.   

    不可能,除非你用VARCHAR类型来存储.
      

  5.   

    不管这些,在前台程序中去掉日期部分。
    如果没有前台程序,那就RIGHT(CONVERT(varchar(19), 开始时间, 120), 8) 也可以
      

  6.   

    拙见
    我觉得你可以用一个函数,将smalldatetime数据返回一个字符串就可以了
    create function fuca(@hiredate smalldatetime 
    )
    returns nvarchar(20)
    as
    begin
    declare @s nvarchar(20)
    set @s = cast(DATEPART(hh ,@hiredate)as nvarchar)+':'+cast(DATEPART( mi,@hiredate)as nvarchar)
    return(@s)
    end 
    go
    select dbo.fuca(getdate())
      

  7.   

    是的,只取用份用datepart(month,date)就行了=================================
    也可以用month(date),返回的是一個數值型數據