有datatime类型的字段,insert一个时间(9:00:00),执行之后该日期字段值为1900-1-1 9:00:00,会自动在前面加上一个日期1900-1-1,请问该如何解决。(不想改换为varchar类型)

解决方案 »

  1.   

    Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime。SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。
    ------------------------------------------------------------------------------------------------
    上面是SQL的注释。如果想只要时间,只能用字符型,或者显示结果时只显示时间
      

  2.   

    这样不知道行不行:
    select convert(varchar(2),datepart(hh,getdate()))+':'+convert(varchar(2),datepart(n,getdate()))+':'+convert(varchar(2),datepart(ss,getdate()))
    感觉好麻烦,有什么更好的方法?
      

  3.   

    select right(convert(varchar(19), getdate(), 121), 8)
      

  4.   

    SELECT CONVERT(char(12), GETDATE(), 8)
      

  5.   

    select convert(varchar(8), getdate(), 8)
      

  6.   

    如果只有时间,就用字符型,SQL不支持此种情况
      

  7.   

    select convert(datetime,'2006-10-21 08:41:20') 可行!
    設你原來字段XXX=‘2006-10-21’
    現在要加入時間:08:41:20
    select convert(datetime,XXX+ ' '+'2006-10-21')
      

  8.   

    select convert(datetime, right(convert(varchar(19), getdate(), 121), 8)+' 1999-01-01')
      

  9.   

    或者
    select convert(datetime,  convert(varchar(20),getdate(),114)+' 1999-01-01')