Q

Converting a character column containing dates to a DATE column in Oracle

I have a table with a column called hold_dt which is of type VARCHAR2. I use it to 'hold' the date field stored...

as a character, formatted as ddmmyy. I also have a date column in the same table which is of type DATE. How do I use the hold_dt column to populate the real date column? This problem requires that the database be capable of converting a character string to a date. Fortunately, most are. Sadly, they all do it differently. However, the considerations for dealing with the conversion apply to all databases, so since you're using Oracle, let's look at the problem using Oracle's TO_DATE() function --

update yourTable
   set theDatefield = TO_DATE(hold_dt,'DDMMYY')

There are several things to watch out for:

  • NULLs in hold_dt will give NULLs in theDatefield

    If you want to set a valid date instead, use COALESCE() --

    update yourTable
       set theDatefield = TO_DATE(COALESCE(hold_dt,'311299'),'DDMMYY')
  • invalid dates in hold_dt will cause exceptions

    If you have blanks, for example, do two passes --

    update yourTable
       set theDatefield = TO_DATE(hold_dt,'DDMMYY')
     where hold_dt <> '';
    
    update yourTable set theDatefield = TO_DATE('311299','DDMMYY') where hold_dt = '';
  • converted dates will include times that default to midnight

    Oracle DATE fields include a time. If you later want to compare the converted dates against, say, SYSDATE, chances are infinitessimal that they will match (those chances being the same as the query running at exactly midnight). Use TRUNC() to compare just the date portions --

    select "a hit! a palpable hit!"
      from yourTable
     where TRUNC(theDatefield) = TRUNC(SYSDATE)

Philip Greenspun has a very informative article on Oracle Dates on the Arsdigita web site. (Note: Arsdigita has been sold so that URL may not last forever.)

For More Information

  • What do you think about this answer? E-mail the edtiors at editor@searchDatabase.com with your feedback.
  • The Best SQL Web Links: tips, tutorials, scripts, and more.
  • Have an SQL tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize. Submit your tip today!
  • Ask your technical SQL questions -- or help out your peers by answering them -- in our live discussion forums.
  • Ask the Experts yourself: Our SQL, database design, Oracle, SQL Server, DB2, metadata, object-oriented and data warehousing gurus are waiting to answer your toughest questions.

This was last published in February 2002

Dig Deeper on Oracle and SQL

PRO+

Content

Find more PRO+ content and other member only offers, here.

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchDataManagement

SearchBusinessAnalytics

SearchSAP

SearchSQLServer

TheServerSide

SearchDataCenter

SearchContentManagement

SearchFinancialApplications

Close