控制面板里我选择短日期格式"yyyy-mm-dd"

解决方案 »

  1.   

    --我的电脑上没错select convert(smalldatetime,'2004-03-14')                                                       
    --结果:2004-03-14 00:00:00
      

  2.   

    --出错的原因是你修改了数据库的日期处理规则,改回来就可以了.
    --设置回默认的日期处理格式
    SET DATEFORMAT ymd--进行转换处理
    select convert(smalldatetime,'2004-03-14')/*--测试结果
    ------------------------------------------------------ 
    2004-03-14 00:00:00(所影响的行数为 1 行)
    --*/
      

  3.   

    --关于此错误的测试--修改默认的日期处理规则
    SET DATEFORMAT dmy--测试
    select convert(smalldatetime,'20040314')select convert(smalldatetime,'2004-03-14')--恢复
    SET DATEFORMAT ymd/*--测试结果
                                                           
    ------------------------------------------------------ 
    2004-03-14 00:00:00(所影响的行数为 1 行)服务器: 消息 296,级别 16,状态 3,行 8
    从 char 数据类型到 smalldatetime 数据类型的转换导致 smalldatetime 值越界。
    --*/