我正在尝试在Oracle中创建一个表,希望创建一年的数据类型:
create table testingTable
(
testID varchar2(3) primary key,
dateDeveloped year(4)
);
我得到的错误信息是
Error at Command Line : 16 Column : 19
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
感谢您的时间。
答案 0 :(得分:1)
为了得到社区的意见,如何只在表格中存储年份,我发布了两个截然相反的答案。我已经将它们作为社区维基,所以请根据您的意见自由地投票或投票。
如果你想存储"时间点"您应该使用DATE
类型:
create table testingTable
(
testID varchar2(3) primary key,
dateDeveloped date
);
如果您只对年份组件感兴趣,则可以在使用该字段时提取该组件:
extract(year from dateDeveloped)
在插入时,您将把4位数年份转换为正确的日期:
to_date('1984', 'YYYY') -- evaluating to the rather surprising 11/01/1984
答案 1 :(得分:1)
为了得到社区对“如何只在一张桌子上存储年份”的意见,我发布了两个截然相反的答案。我已经把它们作为社区维基,所以请根据你的意见随意上下投票。
如果您只想存储4位数年份,为什么还要打扰DATE
类型?改为使用NUMBER(4)
:
create table testingTable
(
testID varchar2(3) primary key,
yearDeveloped number(4)
);
这样,您可以直接访问使用该字段的年份。
答案 2 :(得分:0)
看起来你使用了错误的语法。它应该是这样的。
INTERVAL YEAR (precision) TO MONTH
一段时间,表示为年和月。 precision值指定日期的YEAR字段中的位数。精度可以是0到9,默认为2年。 Check here了解更多信息
create table testingTable
(
testID varchar2(3) primary key,
dateDeveloped INTERVAL YEAR(4) TO MONTH
);