我正在开发 SQL Plus Oracle Database 21c Express Edition 21.0.0.0 版本 21.3.0.0
我正在制作一个表“Post”,其中一个属性需要发布日期和时间。我尝试过使用日期时间和时间戳类型,因为互联网上的不同来源给我指明了不同的方向,并且在这两种情况下,SQL 都会抛出错误“无效数据类型”。
create table Post(
post_id integer primary key,
title varchar(60),
post_time timestamp,
content text,
username varchar(20),
foreign key(username) references Users(username)
);
有人可以告诉我需要修改什么吗,如果可能的话,我还希望以“DD-MM-YYY hh:mm:ss”格式插入日期时间。
有人可以告诉我需要修改什么吗
TEXT
不是有效的 Oracle 数据类型。使用CLOB
。
create table Post(
post_id INTEGER PRIMARY KEY,
title VARCHAR2(60), -- VARCHAR2 not VARCHAR
post_time DATE, -- DATE has time component
content CLOB, -- Text is not valid, use CLOB
username, -- Do not need a data type as it will inherit
-- the data type from the referenced column.
FOREIGN KEY (username) REFERENCES Users(username)
);
如果可能的话,我还希望以“DD-MM-YYY hh:mm:ss”格式插入日期时间。
在甲骨文中:
DATE
数据类型是一种二进制数据类型,由 7 个字节组成,表示:世纪、世纪年份、月、日、小时、分钟和秒。TIMESTAMP
数据类型是一种二进制数据类型,由 7-13 个字节组成,表示世纪、世纪年份、月、日、小时、分钟和秒,以及表示小数秒的 0-6 个字节。二进制数据类型和ALWAYS都具有这些组件,并且从不以任何特定的人类可读格式存储。
如果您想以特定的人类可读格式显示日期,请使用:
SELECT TO_CHAR(post_time, 'DD-MM-YYYY HH24:MI:SS') AS post_time
FROM post
以您想要的格式显示它。