如何将ipv4地址和日期存储到oracle数据库中

时间:2013-12-07 08:44:20

标签: sql oracle date ipv4

是的,我是甲骨文的新手。我想知道如何在我的数据库中存储ipv4地址。我可以知道为什么我的约会不会出现在2013年吗?

这是我创建表格的方式

CREATE TABLE developer.FYP (
  id_user INT NOT NULL ,
  host_name VARCHAR2(255) ,
  ip_address VARCHAR2(255) ,
  last_login TIMESTAMP(0)  ,
  date_register DATE ,
  data VARCHAR2(255) ,
  PRIMARY KEY (id_user)
)
  NOCOMPRESS;

这就是我存储数据的方式

INSERT INTO developer.fyp VALUES (
    id_user_seq.nextval,
    SYS_CONTEXT('USERENV','TERMINAL'),
    SYS_CONTEXT('USERENV','IP_ADDRESS'),
    SYSDATE,
    TO_DATE(SYSDATE,'DD/MM/YYYY'),
    enc_dec.encrypt ('hello world')

    );

enter image description here

3 个答案:

答案 0 :(得分:1)

存储的IP地址可能与您从底层库请求IP地址的方式有关,并且根本不可能是数据库问题。

除非您可以发布用于收集数据和执行插入的代码,否则这里没有人能够给出一个好的答案

答案 1 :(得分:0)

图像中带圆圈的数据是IPV6地址而不是IPV4地址。要存储IP地址,您可以使用VARCHAR。 IP地址不代表数字,您很少对其进行数学计算。因此,最好使用 VARCHAR 来存储IP地址。

  

我可能知道为什么我的约会不会出现在2013年吗?

要回答此问题,请告知我们您如何在DATE_REGISTER列中存储日期。

答案 2 :(得分:0)

日期的问题是这个;

INSERT INTO developer.fyp VALUES (
  ...
  SYSDATE,
  TO_DATE(SYSDATE,'DD/MM/YYYY'),
  ...
);

TO_DATE会将SYSDATE转换为字符串并将其解析回日期,这将失去年份的2位数字。而只是做,

INSERT INTO developer.fyp VALUES (
  ...
  SYSDATE,
  SYSDATE,
  ...
);

...并且日期会正确显示。

第二个问题 - 您在日志中获得IPv6地址 - 是因为客户端实际上是使用IPv6连接到Oracle ,并且没有IPv4地址要记录。如果您通过IPv4连接客户端,则会自动将其记录下来。