SQL SEVER 2000中 
定义为datetime数据类型输入:1970-12-12
为什么结果是1905-05-01 00:00:00.000本人纯新手 ,求高手指点。

解决方案 »

  1.   

    insert into tb(时间字段名) values(cast('1970-12-12' as datetime))
      

  2.   

    1楼的可以了 ,可是为什么直接用
    insert tb 
    select 1970-12-12 union all
    select 1971-1-1
    这种方式不行呢? 
      

  3.   

    因为你的数据库中日期格式设置不对。
    你可以参考:
    SET DATEFORMAT
    设置用于输入 datetime 或 smalldatetime 数据的日期部分(月/日/年)的顺序。 语法
    SET DATEFORMAT { format | @format_var } 参数
    format | @format_var是日期部分的顺序。可以是 Unicode 或转换为 Unicode 的 DBCS。有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。美国英语默认值是 mdy。注释
    该设置仅用在将字符串转换为日期值时的解释中。它对日期值的显示没有影响。SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。权限
    SET DATEFORMAT 权限默认授予所有用户。示例
    下例使用不同的日期格式处理不同格式的日期字符串。SET DATEFORMAT mdy
    GO
    DECLARE @datevar datetime
    SET @datevar = '12/31/98'
    SELECT @datevar
    GOSET DATEFORMAT ydm
    GO
    DECLARE @datevar datetime
    SET @datevar = '98/31/12'
    SELECT @datevar
    GOSET DATEFORMAT ymd
    GO
    DECLARE @datevar datetime
    SET @datevar = '98/12/31'
    SELECT @datevar
    GO
      

  4.   


    --1、结果1905-05-01 00:00:00.000
    select CAST(1970-12-12 as datetime)
    --2、结果1970-12-12 00:00:00.000
    select CAST('1970-12-12' as datetime)看明白没??
    你肯定是没加引号,默认就是int相减
      

  5.   


    insert into tb 
    select ‘1970-12-12’ union all
    select ‘1971-1-1’这样不就行了撒