2014-10-10 90 views
0

我在Excel中有一个日期格式2011-01-06T06:30:10Z。我只想从excel中将日期部分加载到表中。我如何从中获取日期部分。 即2011-01-06在Oracle中转换日期格式

感谢

+1

如果您已经将数据加载到数据库中,那么您只需使用'TRUNC'。 DATE总是有一个日期时间部分。而你看到的日期看起来似乎不是它存储在数据库中的方式。格式适合我们人类理解。日期以内部格式存储在7个字节中。 – 2014-10-10 14:59:32

+0

@lalit kumar B谢谢你的信息。我会尝试加载数据,但在加载之前,我在想我应该创建哪种列类型,因为它最后有Z,所以不知道它是否是时间戳格式。 – 2014-10-10 15:04:29

+0

加载它使用'TRUNC'。它会截断时间部分,并只显示日期部分。如果这是您的要求的一部分,请告诉我,我将它添加为答案 – 2014-10-10 15:10:28

回答

2

试试这个:

select cast(TO_TIMESTAMP_TZ(REPLACE('2011-01-06T06:30:10Z', 'T', ''), 'YYYY-MM-DD HH:MI:SS TZH:TZM') as date) from dual 
+0

非常感谢,是的,它工作。令人敬畏! – 2014-10-10 15:00:24

+2

你不需要'REPLACE',只需做'cast(TO_TIMESTAMP_TZ('2011-01-06T06:30:10Z','YYYY-MM-DD“T”HH:MI:SS TZH:TZM')日期)' – 2014-10-10 15:25:32

+0

@ Wernfried是的!那也起作用了。谢谢。这对于快速处理肯定有帮助 – 2014-10-10 15:32:15

0

我认为,需要一些更多的解释。

将数据加载到数据库中是一个部分,在提取后显示它是另一部分。

如果您已将数据加载到数据库中,那么您只需使用TRUNC即可。它会截断time部分,并将只显示date部分。

DATE总是有一个日期时间部分在一起。 TIMESTAMPDATE类型的扩展。而你看到的日期看起来不是它存储在数据库中的方式。格式适合我们人类理解。日期以内部格式存储在7个字节中。通过评论

基于OP的问题

更多信息 NEVER商店DATEVARCHAR2数据类型。日期不是字符串文字。 Oracle提供了很多FORMAT MODELS以按照您的需要显示日期时间。迟早,由于数据转换,您将遇到性能问题。始终使用显式转换将文字转换为完美DATE以将其与其他日期值进行比较。

+0

好的,我正在谈论转换和加载数据,显示很简单。现在我将在excel中这样做,“=插入测试值(cast(TO_TIMESTAMP_TZ(REPLACE ('&A2&','T',''),'YYYY-MM-DD HH:MI:SS TZH:TZM')作为日期)); – 2014-10-10 15:29:32

+0

这很好。祝你好运!你可以搜索谷歌'但我想存储日期',你会得到Ed Stevens的一篇非常好的文章,阅读它。这很棒。我希望我的回答能让你更好地理解:-) – 2014-10-10 15:32:06

+0

当然!再次感谢您将阅读文章 – 2014-10-10 15:35:16