sql - 跳过 Oracle TO_DATE 函数中的字符

标签 sql date oracle11g to-date

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

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

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

Import Data Wizard - Date

最佳答案

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

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

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

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

SELECT TO_DATE('01:01:01.0xx','hh24:mi:ss.###') FROM dual;

这些似乎不起作用:

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

SELECT TO_DATE('01:01:01.xxx','hh24:mi:ss.###') FROM dual;

这似乎没有记录,但您似乎能够毫无问题地互换标点符号:

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

如果您知道要忽略的文本,您可以使用用双引号括起来的字 rune 字:

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

关于sql - 跳过 Oracle TO_DATE 函数中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229622/

相关文章:

mysql - 从模式中删除一对多关系

sql - 如何从与给定名称匹配的服务器上的所有数据库中删除特定安全用户?

java - Hibernate 将时间戳中的时间映射为时间 00 :00:00

java - 如何创建一个具有绝对值的 java.util.Date 字段而不改变值的时区偏移?

mysql - 从 2 个或不同表的列名中将值插入到表中?

MySQL OR 与 IN 性能

SQL 查询 If not null, then update or else keep the same data

java - 将日期转换为不同的时区

database - Oracle aq 传播,ORA-25215 : user_data type and queue type do not match

database - 我应该对表进行分区/子分区吗?