문제

I have a date (stored as a VARCHAR2) in a database with the format:

20090123_163842.865
yyyyMMdd_hhmmss.ttt

and I want to make a SQL sentence to obtain:

23/01/2009 16:38:42,865
dd/MM/yyyy hh:mm:ss,ttt

MY objective is to add it manually (I know that data can be exported from database, and imported into Excel, but I want to do it manually) to Excel as a recognizable Date.

How should my SQL sentence be?

I have tried to to it by:

select TO_TIMESTAMP(my_time_utc, 'YYYYMMDD_HH24MISS.FF3') from myTable

but I am only able to obtain:

2009-01-23 16:38:42.865

Thanks

도움이 되었습니까?

해결책

It never ceases to amaze me how many people confuse these operations.

First you need to convert the varchar 'fake date' to a real date: use to_date for this. Then you need to convert the date to a varchar for presentation: use to_char for this.

select to_char(to_date(column, 'yyyyMMdd_hhmmss.ttt'), 'dd/MM/yyyy hh:mm:ss,ttt')
from your_table;

should do what you want.

다른 팁

When oracle retrieve a date field from database and show it to you a cast implicit conversion is made. The format pattern for this conversion is set in oracle configuration. Quoting oracle doc:

The default date format for an Oracle date value is derived from the NLS_DATE_FORMAT and NLS_DATE_LANGUAGE initialization parameters

  • If you perform query from Excel, your actual query is enougth because excel know date format and is able to read from Oracle with out problems.

  • If you do a copy-paste from your screen results to excel, then you should cast back date to varchar with your desired format or, of course, change oracle configuration to match your locales.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top