【发布时间】:2014-07-26 15:43:24
【问题描述】:
我正在为文本文件编写一个简单的数据加载器,并希望添加一个功能以将日期正确加载到表中。我遇到的问题是我事先不知道日期格式,并且它不会是我的脚本进行插入 - 它必须生成插入语句以供以后使用。
Date.parse 几乎是我所需要的。如果有办法以一种我可以用来生成to_date(...)(Oracle 标准)的方式获取它在字符串上标识的格式,那将是完美的。
一个例子:
我的输入文件:
user_name;birth_date
Sue;20130427
Amy;31/4/1984
应该生成:
insert into my_table values ('Sue', to_date('20130427','yyyymmdd'));
insert into my_table values ('Amy', to_date('31/4/1984','dd/mm/yyyy'));
请注意,原始字符串保持不变很重要 - 所以我无法将其解析为插入中使用的标准格式(这是一项要求)。
目前我只是在测试一堆正则表达式并进行一些验证,但我想知道是否有更强大的方法。
【问题讨论】:
-
有趣的问题,说得好。
-
如何使用Date#strptime:遍历可能的格式字符串范围,直到返回日期对象?当然,您必须
rescue例外。 -
这是不可能的。给定
3/7/1984,你怎么知道这是 1984 年 3 月 7 日还是 1984 年 7 月 3 日?给定050601,您怎么知道这是 2001 年 5 月 6 日、2001 年 6 月 5 日还是 2005 年 6 月 1 日等? -
@sawa,除非它总是一个或另一个,遵循一个规则,考虑到它来自输入文件,我认为这很可能。菲利普?
-
@sawa 我的文件会有很多样本,我总是可以假设我至少有一个明确的日期可以使用。除了文件中的日期格式保持不变之外(尽管它可能会因文件而异)
标签: ruby oracle datetime-format