declare @birthday datetime
set @birthday =1988-1-1
select @birthday
这个运行的结果为什么是:1905-06-10 00:00:00.000还有
declare @birthday varchar
set @birthday ='1988-1-1'
select convert(datetime,@birthday)
报错:
消息 241,级别 16,状态 1,第 22 行
从字符串转换日期和/或时间时,转换失败。

解决方案 »

  1.   


    declare @birthday datetime
    set @birthday ='1988-1-1'
    select @birthday
    /*
    1988-01-01 00:00:00.000
    */
      

  2.   

    datetime类型的数据:1905-06-10 00:00:00.000
    date类型的数据:1905-06-10
      

  3.   

    declare @birthday varchar(10)
    set @birthday ='1988-1-1'
    select convert(datetime,@birthday)/*-----------------------
    1988-01-01 00:00:00.000(1 行受影响)
      

  4.   


    declare @birthday varchar(20)
    set @birthday ='1988-1-1'
    select convert(datetime,@birthday)
    /*
    1988-01-01 00:00:00.000
    */
      

  5.   

    楼主的第一种情况应该给1988-01-01加上单引号。
    第二种情况应该给定义的varchar一个长度。例如varchar(20)
      

  6.   

    declare @birthday datetime
    set @birthday ='1988-1-1'
    select @birthday