da_03         foxpro与sql中的时间格式不同,这没有办法:
========>>>>>
SUBS(DTOC(da_03),7,4))+'-'+SUBS(DTOC(da_03),3,2)+'-'+SUBS(DTOC(da_03),1,2)

解决方案 »

  1.   

    TO:XiaoZhengGe(㊣小政哥㊣·www.yueyan.com·㊣小政哥㊣)
    请问SUBS(DTOC(da_03),7,4))+'-'+SUBS(DTOC(da_03),3,2)+'-'+SUBS(DTOC(da_03),1,2)
    转换在select语句里行吗?
      

  2.   

    你先:
    insert into 新表
    select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=F:\projects\交通局项目\car_dbf\;
    SourceType=DBF',
    'select cz_key,cl_key,gc_key,jk_key,da_03,da_04,da_05 from [model_da.DBF]')你看看新表里的da_03,da_04,da_05 日期格式就知道了。
      

  3.   

    TO:XiaoZhengGe(㊣小政哥㊣·www.yueyan.com·㊣小政哥㊣)
    我用这个方法不能成功,就是用:
    select into 新表 from (
    select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=F:\projects\交通局项目\car_dbf\;
    SourceType=DBF',
    'select cz_key,cl_key,gc_key,jk_key,da_03,da_04,da_05 from [model_da.DBF]'))
    也不行
      

  4.   

    测试:
    select * into #dd from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=F:\projects\交通局项目\car_dbf\;
    SourceType=DBF',
    'select cz_key,cl_key,gc_key,jk_key,da_03,da_04,da_05 from [model_da.DBF]'))select * from #dd
    drop table #dd
      

  5.   

    还是不行,出现:
    服务器: 消息 8114,级别 16,状态 10,行 8
    将数据类型 DBTYPE_DBDATE 转换为 datetime 时出错。
      

  6.   

    数据库是Foxpro2.5B,model_da.DBF表结构为:
    序号  字段名称         类型        宽度   小数点位数    索引   Collate
    1     CZ_KEY         Numeric       8                    Asc    Machine
    2     CL_KEY         Numeric       8                    Asc    Machine
    3     GC_KEY         Numeric       8                    Asc    Machine
    4     JK_KEY         Numeric       8                    Asc    Machine
    5     DA_03          Date          8                    Asc    Machine
    6     DA_04          Date          8                    Asc    Machine
    7     DA_05          Numeric       3                    Asc    Machine    
      

  7.   

    还有查询当日的,where da_04=?
    应该怎么写?
      

  8.   

    select * into #dd from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=F:\projects\交通局项目\car_dbf\;
    SourceType=DBF',
    'select cz_key,cl_key,gc_key,jk_key,cfrom,SUBS(DTOC(da_03),1,8)  [model_da.DBF]'))select * from #dd
    drop table #dd
    将日期转换成字符型先试试:SUBS(DTOC(da_03),1,8) 看看结果?
      

  9.   

    转成char(8)后再转到datetime还是不行
      

  10.   

    你先插到临时表里,在临时表里调整一下,再把临时表里的数据插到你要插入的表中
    insert into #a
    select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=F:\projects\交通局项目\car_dbf\;
    SourceType=DBF',
      

  11.   

    to: yesterday2000(一笑而过):
    现在先插到临时表里就有没有,提示:
    服务器: 消息 8114,级别 16,状态 10,行 1
    将数据类型 DBTYPE_DBDATE 转换为 datetime 时出错。
      

  12.   

    那你在提foxpro 的数据时,把DBTYPE_DBDATE 这列的数据先转换成字符型或日期型,但在foxpro里怎么转换我不会!
      

  13.   

    一定要在sql语句中用SUBS(DTOC(da_03),1,8)转换成字符串的形式,你可以在windows的开始菜单=》设置=》控制面板=>区域选项=>日期中设置日期的格式,这个对foxpro可以有影响.foxpro2.5版本太低了,它的格式完全取决这里的设置.
      

  14.   

    TO:XiaoZhengGe(㊣小政哥㊣·www.yueyan.com·㊣小政哥㊣),你好!
    我看在DA_04里是这么存的:07/08/2004,应该在日期中怎么设置日期的格式呢?
      

  15.   

    请问mm/dd/yyyy方式用char(10)存在数据库里,现在想转成datetime类型,用convert(datetime,da_03,101)怎么说
    服务器: 消息 242,级别 16,状态 3,行 1
    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
      

  16.   

    我发现在foxpro里空的时间是用 /  /  来表示的,到sqlserver里转成char(10)后存成 /  /  ,这时要把记录里是这样的删除,不然导不过去。
      

  17.   

    foxpro数据库是94年起用的,比较老。
    再请教XiaoZhengGe(㊣小政哥㊣·www.yueyan.com·㊣小政哥㊣) :
    在foxpro里查询当日的用什么语句,where da_04=? 应该怎么写?
    我知道在sqlserver或oracle里比较好办,象在sqlserver里用datediff和getdate函数就可以,不知道foxpro里应该怎么办?
      

  18.   

    foxpro 里面 取今天日期是用  where   da_04=date(),如果是其它的字符型,可以用 ctod ("2004.08.16")把字符日期转正日期型。所以你可以先转成字符型,再换成日期
      

  19.   

    在foxpro里/  /  是空值吧,判断da_04字段里的值为空应该怎么写?where da_04=null不对
      

  20.   

    你最好是在foxpro里面将日期值为空的设置一个默认值后再导到ms sql中来如:
    replace all da_04 with 1900.01.01 where da_04<1900.01.01
    这只是一个思路,上面的语句肯定有错,我没有用过foxpro只是看过。
      

  21.   

    谢谢XiaoZhengGe!
    谁能告诉我呀?急!
      

  22.   

    用REPLACE ALL model_da.da_04 WITH DATE() FOR EMPTY(Model_da.da_04)
    foxpro中如果Model_da.da_04是空的就用date()当前时间来代替
      

  23.   

    从foxpro到sqlserver date转datetime应该可以,用dts或用作业都行,你检查一下foxpro里da_04值对不对