Oracle TO_DATE()函数提供了不需要的输出

时间:2014-04-03 06:33:16

标签: oracle date

我在数据库

中有一个带有Oracle timestamp数据类型的DATE列

它存储的值如下:

06-SEP-13 05.22.23.000000000 PM

我尝试这样做TO_CHAR(DATE, 'dd-MM-yyyy')我得到了这个:06-09-2013

然后我尝试使用TO_DATE

将输出转换为日期
TO_DATE(TO_CHAR(DATE, 'dd-MM-yyyy'), 'dd-MM-yyyy') 

但我明白了:06-SEP-13

我希望它采用这种格式06-09-2013

为什么会这样?

非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

to_date()没有给出任何格式的日期;日期和时间戳具有内部表示,并且在它们显示在某处之前不具有任何有意义/有用的格式。您将时间戳转换为字符串,然后又转回日期,您可以将其与

一起使用
cast(trunc(your_timestamp) as date)

trunc function删除时间部分,the cast function将结果从时间戳转换为日期。

当您的查询显示该日期时,无论您构建它,您的客户端都会决定使用哪种格式。如果您没有明确指定to_char()格式,那么您的客户将使用默认值NLS_DATE_FORMAT。您可以为每个会话更改它,但是您不应该依赖其他人运行代码时可能会有所不同的隐式设置,因此请始终使用to_char进行显示。

答案 1 :(得分:2)

您使用的是什么工具?我确定它的NLS日期格式会话设置。