Oracle TO_DATE 函数中的跳过字符

Ehr*_*ryk 3 sql date oracle11g to-date

我正在yyyy-mm-dd hh24:mi:ss.mmm使用 SQL Developer 的导入数据向导将 .tsv ( )中具有 SQL Server 格式日期的数据导入到 Oracle 数据库中。

如何忽略.mmm将它们导入 DATE 列的字符?我似乎无法找到答案;我知道 DATE 列不包含毫秒,但为什么我不能忽略 TO_DATE 调用中的特定模式?

另请注意,因为我没有生成 TO_DATE 调用,所以SUBSTRING在导入期间我不能或以其他方式操作 .tsv 的值。

导入数据向导 - 日期

Pet*_*ang 5

您可以#为此使用井号 ( ):

SELECT TO_DATE('2015-01-01 01:00:00.999', 'yyyy-mm-dd hh24:mi:ss.###') FROM dual;
--> 01/01/2015 01:00:00
Run Code Online (Sandbox Code Playgroud)

我没有在文档中找到这个,所以我不能说为什么,但这些也有效:

SELECT TO_DATE('01_','hh24#') FROM dual;

SELECT TO_DATE('01:01:01.0xx','hh24:mi:ss.###') FROM dual;
Run Code Online (Sandbox Code Playgroud)

这些似乎不起作用:

SELECT TO_DATE('010','hh24#') FROM dual;

SELECT TO_DATE('01:01:01.xxx','hh24:mi:ss.###') FROM dual;
Run Code Online (Sandbox Code Playgroud)

这似乎没有记录,但您似乎可以毫无问题地交换标点符号:

SELECT TO_DATE('2015-01;01 11:12/13',
               'yyyy.mm,dd_hh-mi ss') FROM dual;
--> 01/01/2015 11:12:13
Run Code Online (Sandbox Code Playgroud)

如果您知道要忽略哪个文本,则可以使用用双引号括起来的字符文字

SELECT TO_DATE('foo2015bar-01-!#%}01', '"foo"yyyy"bar"-mm-"!#%}"dd') FROM dual;
--> 01/01/2015
Run Code Online (Sandbox Code Playgroud)