我应该使用什么类型的年度专栏?

时间:2014-11-30 15:50:23

标签: sql oracle date create-table

我正在尝试在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:

感谢您的时间。

3 个答案:

答案 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
);