select cast('20030101' as datetime)
OR
select convert(datetime,'20030101')

解决方案 »

  1.   

    这种格式也可以。
    SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)
    GO
    --returns time as 12:36
    SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)
    GO
      

  2.   

    试试这种方法
    select convert(varchar(20),'2004-01-10 11:25:36',121)
    GO
      

  3.   

    上面的方法均可,但要看楼主的具体数据,这是我前几天遇到的,拿来参考!
    表[200401_9](部分数据,意为hh:mm:ss)
    starttime
    000001
    000221
    000221
    000204
    013014如:select cast(starttime as datetime) from [200401_9]
    ---------------测试结果--------------------------------------------------------
    服务器: 消息 242,级别 16,状态 3,行 1
    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
    -------------------------------------------------------------------------------
    如:select convert(datetime,left(starttime,2)+':'+substring(starttime,3,2)+':'+right(starttime,2)) from [200401_9]
    ---------------测试结果--------------------------------------------------------(所影响的行数为 4682 行)
      

  4.   

    alter Procedure InsertQuestion
    @cou_no                            numeric ,
    @teau_no                           numeric ,
    @que_type                          char(1),
    @que_score                         float,
    @que_difficulty                    char(1),
    @que_picture                       image ,
    @que_content                       text, 
    @que_createtime  datetime = 'cast(getdate() as datetime)',
    @que_modifytime  datetime = 'cast(getdate() as datetime)'
    AS
    INSERT INTO Question
    (
    cou_no,
    teau_no,
    que_type,
    que_score,
    que_difficulty,
    que_picture,
    que_content,
    que_createtime,  
    que_modifytime 
    )
    VALUES
    (
    @cou_no,
    @teau_no,
    @que_type,
    @que_score,
    @que_difficulty,
    @que_picture,
    @que_content,
    @que_createtime, 
    @que_modifytime 
    )exec InsertQuestion '1','11','2','22','2','','安放'从字符串转换为 datetime 时发生语法错误。应该怎么写