我在数据库
中有一个带有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
。
为什么会这样?
非常感谢帮助。
答案 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日期格式会话设置。