我需要加载一个包含.csv文件的表,其中包含日期" 20140825145416"。
我在我的控制文件中尝试过使用(DT date" yyyymmdd hh24:mm:ss")。
它会抛出错误,因为ORA-01821:日期格式无法识别
我要求表中的数据为" MM / DD / YYYY HH:MM:SS"。
样本数据:20140825145416
提前感谢。
答案 0 :(得分:3)
好吧,如果我没有指出正确的答案是永远不会将日期存储为VARCHAR2数据,那么我会失职,但要使其成为正确的DATE列并加载它:
DT DATE "YYYYMMDDHH24MISS"
选择时完成格式化。如果您需要在计算中使用该日期,它将使您的生活变得更加轻松。
如果您无法控制数据库并且必须将其存储为VARCHAR2,请先转换为日期,然后在插入之前使用to_char进行格式化:
DT CHAR "to_char(to_date(:DT, 'YYYYMMDDHH24MISS'), 'MM/DD/YYYY HH24:MI:SS')"
注意'MI'用于分钟。你有一个错字,你再次使用'MM'(几个月)几分钟。
答案 1 :(得分:1)
我知道在上一个答案中已经说过了,但它非常重要,值得重复。不要将日期存储为varchars !!
答案 2 :(得分:0)
如果您的DT列是时间戳,那么这可能会起作用
DT CHAR(25) date_format TIMESTAMP mask "yyyymmddhhmiss"
我在外部表中使用了类似的东西。也许这可能有所帮助 https://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm 和 https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8128892010789