insert into 表 select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls',sheet1$)提示:从字符串转换为datatime时发生语法错误。如何解决?谢谢

解决方案 »

  1.   

    Excel中有非法日期,找出来,Excel中删除或改正:select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls',sheet1$)
    where isdate(日期字段)=0
      

  2.   

    但是所有datetime数据在excel中都是字符型阿,如何改正阿?
    还是直接在excel中改?
      

  3.   

    现将SQL Server中的表DateTime类型改为Char(19),导入后再改回.
      

  4.   

    当然要直接在Excel中改!什么叫非法日期1、日期越界比如:
    2007-2-29
    2008-4-312、含非法字符,如全角数字:
    2007-1-13、等等
      

  5.   

    怎么改阿?在excel中datatime用的是宋体,12号字,不行阿?
      

  6.   

    只能在delphi中写代码,对类似的全角数字进行转换后再入库.
      

  7.   

    选中列-->右键-->设置单元格格式-->数字-->日期-->1997-3-4 13:30
      

  8.   

    在excel中输入日期格式的有什么要求?
      

  9.   

    还是不行阿,服务器: 消息 241,级别 16,状态 1,行 2
    从字符串转换为 datetime 时发生语法错误。
      

  10.   

    select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls',sheet1$)
    where isdate(日期字段)=0改或删随你
      

  11.   

    我狂晕,我从sql导出到excel,然后导入,还是出现datetime 时发生语法错误~~
      

  12.   

    真的是这样阿,我是在调程序,随便做的excel表,直接从excel中导入sql数据,是不是和数据库表设计有关系?
      

  13.   

    我记起来了:select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls',sheet1$)返回的字段顺序是按字段名排序的,并不是Excel中的ABCD...列顺序。用下面这个能解决问题:insert into 表 select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls','select * from sheet1$')
      

  14.   

    我知道你的意思了,谢谢~~
    不过在执行时又出现新问题了
    错误提示:
    服务器: 消息 7321,级别 16,状态 2,行 2
    准备对 OLE DB 提供程序 'MicroSoft.Jet.OleDB.4.0' 执行查询时出错。
    [OLE/DB provider returned message: FROM 子句语法错误。]
    OLE DB 错误跟踪[OLE/DB Provider 'MicroSoft.Jet.OleDB.4.0' ICommandPrepare::Prepare returned 0x80040e14]。
      

  15.   

    -- [sheet1$]
    insert into 表 select * from openrowset('MicroSoft.Jet.OleDB.4.0','Excel 5.0;HDR=yes;Database=f:\student.xls','select * from [sheet1$]')
      

  16.   

    excel中的数据不是datetime,而是字符,所以出错
      

  17.   

    返回的字段顺序是按字段名排序的,并不是Excel中的ABCD...列顺序。 长见识了~~