17:03:04 SQL> select to_date('1770-08-05','yyyy-mm-dd')+31287 from dual;TO_DATE('1770-08-05
-------------------
1856-04-03 00:00:00已用时间:  00: 00: 00.16
17:04:32 SQL>

解决方案 »

  1.   

    select sysdate+30 from dual日期后面+数字,是加的天数
      

  2.   

    db2中知道可以用days实现,oracle找了一下还没找到
      

  3.   

    首先日期形式是以float型存储的,整数表示天,小数表示一天中的已过的小时数(当然需要转换为10进制),并且绝大多数系统都是以1899-12-30 00:00:00时间为起点0,所有就可以这样转换
    日期转换为实数
    select sysdate-to_date('1899-12-30','yyyy-mm-dd') from dual;实数转换为日期
    select xxx.xxx+to_date('1899-12-30','yyyy-mm-dd') from dual;如果是整数加上trunc函数即可
      

  4.   

    我也想知道这个问题的答案,但楼上几位答非所问阿。楼主是说,一个date类型的数据在数据库里面用哪个整数表示。1856-4-3 是 31287,那么2004-10-01是什么?估计也是一个5位的整数把,有没有函数让这个日期对应的整数显示出来,这是需要解决的问题。看楼上几个的答案真觉得.......
      

  5.   

    select to_date('1856-4-3','YYYY-MM-DD')-31287 from dual;TO_DATE('1856-4-3','YYYY-MM-DD1770-8-5即,系统以1770-8-5为基准,每增加一天日期标示+1,如:1770-8-6,为1,1770-8-7,为2select to_date('1856-4-3','YYYY-MM-DD')-to_date('1770-8-5','yyyy-mm-dd') from dual;
    TO_DATE('1856-4-3','YYYY-MM-DD31287
    以此类推:20041001 的值为:
    85524
      

  6.   

    楼主也够可以的啦,
    select sysdate-to_date('1899-12-30','yyyy-mm-dd') from dual;
    详解如下
    把上面的sysdate改为
    select to_date('2004-10-01','yyyy-mm-dd')-to_date('1899-12-30','yyyy-mm-dd') from dual
    结果返回整数为38261
    如果你非得要函数,那么你可以自己把什么得语句封装成函数,不要告诉我你不会写函数啊
    ^_^
      

  7.   

    To smallcrocodile(大鳄鱼):
    其实是这样的:我在 Oracle 中已经成功建立了到 SQLServer 的数据连接。
    我的 SQL Server 数据库中有一个表[学生],它有一个字段[生日]是日期型的。
    我在 SQL Plus 中,想
    update 学生@sql
      set 生日 = '1980-5-1'
        where id = 1
    出错。改成:
    update 学生@sql
      set 生日 = 1980-5-1
        where id = 1
    也不行我也试了:
    update 学生@sql
      set 生日 = To_Date('1980-5-1', 'yyyy-mm-dd')
        where id = 1
    还是出错。只有:
    update 学生@sql
      set 生日 = 31287
        where id = 1
    不出错,于是我就想能不能先把 Oracle 中的日期转换为整数再赋值给 SQL Server 的日期字段。
      

  8.   

    update 学生@sql
      set 生日 = To_char(生日, 'yyyy-mm-dd')
        where id = 1update 学生@sql
      set 生日 = To_char(生日, j)
        where id = 1