这是我创建表格的方式
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')
);
答案 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连接客户端,则会自动将其记录下来。