2012-05-02 41 views
-2

我正在使用Oracle SQL Developer 3.0.03。我正尝试将Excel文件上传到Oracle数据表。我收到日期的错误。数据库中的列是时间戳,我不知道要为“数据加载向导”添加日期格式。如果我使用以下格式(DD-妈妈YY hh.mi.ss),SQL Developer将显示以下错误:SQL开发人员:加载数据日期错误

--Insert failed for row 1 TIMESTAMP_COLUMN GDK-05047: A day of the month must be between 1 and the last day of the month. 
--Row 1 
INSERT INTO TABLE_1 (Column1, Column2, Column3, TIMESTAMP_COLUMN) VALUES ('Some Text','Some Text','Some more text',to_timestamp('40604.0', 'dd-mon-yy hh.mi.ss')); 

在Excel中默认的数字格式为:40604.0 如果更改该小区到一个短日期格式,你会得到:3/2/2011

我想弄清楚'格式'我需要把'数据加载向导'的格式部分,将接受日期格式在EXCEL中,并以TIMESTAMP的形式上传到Oracle。

enter image description here

+0

如果插入** INSERT INTO TABLE_1(列1,列2,栏3,TIMESTAMP_COLUMN)VALUES( '一些文本' ,“一些文本”,“更多文本”,“12 -08-88” 00.00.00'); **它会给你一个错误? – p0rter

+0

@ p0rter我认为这可行,但在Excel文件中的日期是这种格式:40604.0 –

回答

0

Excel“零”日期为1月0日(是,零),1900年。由于Oracle无法在一个月内处理“零”日,因此您需要从Excel值中减去1;因此,下面应该让你接近你想要什么:

SELECT CAST(TO_DATE('01-JAN-1900 00:00:00', 'DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP) + 
      NUMTODSINTERVAL(41017.6361109954 - 1, 'DAY') 
    FROM DUAL 

至于“如何将其导入”去,没有Oracle日期格式,我所知道的做到这一点。最简单的方法是将该值导入NUMBER列,然后运行脚本进行日期转换。

分享和享受。

0

是啊,这就是问题。

月的一天必须在1月的最后一天之间。

1)如何在这些小数产生的?

2)是这个“04-06-2004”?或者是1970年的这几秒?

您需要添加此数字格式的更多详细信息!

1

今天我遇到了同样的事情,'固定'这两种方式。第二种方法可能看起来太复杂了,但如果他们很难自动将日期的格式自动化为Oracle标准的dd-mmm-yy,可能会有所帮助。

  1. 将Excel中的日期列格式化为dd-mmm-yy并直接导入到表格中。
    • 高亮列(S)
    • 选择“更多数字格式”里的现有格式是(在Excel 2010中,它说,一般在主页选项卡
    • 在Dropbox的选择中的最后一项“自定义”在Excel箱

  2. 格式的日期列,MM/DD/YY,导入表的文字,写手册:分类框中
  3. 手动在类型输入DD-MMM-YY从临时文本t插入语句能够使用TO_DATE(date_field,'MM/DD/YYYY')
    • 高亮列(S)
    • 选择“更多数字格式”里的现有格式是(在Excel 2010中,它说,一般在主页选项卡
    • 在Dropbox的选择“Date”分类框中录入
    • 选择 “01年3月14日” 从列表中