Question

TO_CHAR & TO_DATE

Asked by: jay4

what is the diff in two?

i know that to_char used to change into character format and to_date in numeric format but what is the logic?

for eg

select to_char(sysdate)
from dual

select to_date(sysdate)
from dual

i will get the same result right?

so when is the use of it?

can u show some examples to clarify me.how do i properly use and when can i use?

cheers!

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2004-06-09 at 00:57:45ID21018632
Tags

to_date

,

to_char

Topic

Oracle Database

Participating Experts
6
Points
30
Comments
14

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. sysdate problem
    Making a question to a table where i want to add sysdate but it dont get the valu automatic, as seen in text below Part of script column to_char(sysdate,'_yyyymmdd_hh24miss') on new_value my_sysdate spool d:\xxx\xxx\xxxxx&my_sysdate select 'begin' from dual; answer whe...
  2. Problem with sysdate
    ID NAME BDATE -- -------------------- --------- 1 Diapk 13-SEP-02 2 Deba 12-SEP-02 3 BIDYIT 14-SEP-02 4 KAUSIK 10-SEP-02 5 PRANAY 07-SEP-02 6 KAUSIK 05-SEP-02 7 AMIT ...
  3. SQL sysdate problem
    when I select sysdate from dual using to_char function, there is 2 hour difference between the values comes from the server sqlplus and win 2000 frontend sqlplus for the same database. Are there any body knows reason for that. I check the system date and time zoe for both m...
  4. again to_date , to_char
    I am still wondering about to_date and to_char i came to know from last question about to_date and to_char what they do? but in this 2 : 1 SELECT TO_CHAR(12-jun-2003, 'dd-mm-yyyy) from dual; 2 SELECT to_char(to_date('12-jun-2003', 'dd-mm-yyyy')) FROM dual; why doesn;t fi...
  5. ORA-01821: date format not recognized -- SELEC…
    Hi, I have the following: select to_char(sysdate,'hhmiss') into v_time from dual; g_logFileName := 'bcarldebug'||v_time ||'.dbg'; Trying to add hundereds to my file names to not overwrite ones that are written already. I tried the following: (different times...) ...
  6. to_char with date data type
    I am trying to do this: select to_char('2005-04-26 06:00:00','yyyy-mm-dd hh:mi:ss AM') from dual It gives an 'Invalid number error', ORA-01722 However, if I do this: select to_char(sysdate,'yyyy-mm-dd hh:mi:ss AM') from dual it works. Any ideas?

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: grim_toasterPosted on 2004-06-09 at 01:05:29ID: 11267384

to_char is used to convert dates into a character representation, for example, if you want you query to format the date differently:

i.e.
SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') FROM dual;      --> 09/06/2004 12:57:54
SELECT TO_CHAR(SYSDATE, 'Day ddth Month') FROM dual;                    --> Wednesday 09th June

The to_date function is used when you have character input, but need it as a date object (for example when the database column is a Date, you need to insert a date)

i.e.
SELECT TO_DATE('01/01/2004', 'DD/MM/YYYY') FROM dual
SELECT TO_DATE('01/01/2004 13:13:13', 'DD/MM/YYYY HH24:MI:SS') FROM dual

Both functions use format masks to specify how the dates/characters should be formatted, I've given you a couple here but there are many more...

 

by: Sys_ProgPosted on 2004-06-09 at 01:10:07ID: 11267415

to_char is for converting some value in other data type to a char string

While to_date is used to convert a value to a date type OR to convert a date in one format to another



 

by: jay4Posted on 2004-06-09 at 02:21:26ID: 11267815

when we use the combination of both? in what case

 

by: jay4Posted on 2004-06-09 at 02:31:33ID: 11267871


v_date date:to_date('12-jun-2003','DD/MON/YYYY');

how can i initialise date while declaring

i know its works even if i just declare like
v_date date:'12-jun-2003';

but i want to get result as 12/jun/2003 i would like to see the action of to_char changing into character format, is what u mean for function of to_char?

can explain me more.

 

by: jay4Posted on 2004-06-09 at 02:41:27ID: 11267918


v_date date:=to_date('12-04-1998', 'dd/mon/yyyy');

when i want to see this in dbms_output package i can;t

i am still confuse with to_date and to_char function,

 

by: grim_toasterPosted on 2004-06-09 at 03:06:14ID: 11268063

When you specify "v_date date:='12-jun-2003';" you are using implicit conversion based upon your language set-up, but it in my opionion, it is always preferable to use explicit conversion, especially when dealing with dates.

As to your problem of printing the values, in SQL*Plus:

SQL> set serveroutput on;
SQL> DECLARE
  2    l_date DATE := TO_DATE('01/01/2004', 'DD/MM/YYYY');
  3    l_date_formatted VARCHAR2(50);
  4  BEGIN
  5    l_date_formatted := TO_CHAR(l_date, 'Day dth Month');
  6    DBMS_OUTPUT.put_line('formatted = ' || l_date_formatted);
  7  END;
  8  /
formatted = Thursday  4th January

PL/SQL procedure successfully completed.

SQL>

 

by: jay4Posted on 2004-06-09 at 03:54:02ID: 11268322

I can;t initialise only one time, do i need to initialise 2 times like u did in declaration and executable part.

like in varchar when i initialise value dbms_output package simply show my value, i can not use to_char or to_date only one time, i can;t do this task by only one declaration and initialisation

 

by: earthman2Posted on 2004-06-09 at 04:51:59ID: 11268703

to_char and to_date functions will implicitly use the NLS_DATE_FORMAT setting for the current SESSION, if the format string is not given.

Because we developers cannot control in every case what this will be for all users, countries and applications it is usually sensible to provide the date format when we are manipulating and displaying dates.

alter session set nls_date_format='DD/MM/YYYY';
set serveroutput on;
DECLARE
    l_date DATE := '01/01/2004';
BEGIN
     DBMS_OUTPUT.put_line('formatted = ' || l_date );
END;
 /
formatted = 01/01/2004

PL/SQL procedure successfully completed.

alter session set nls_date_format='MM/DD/YYYY';
DECLARE
    l_date DATE := '31/12/2004';
BEGIN
     DBMS_OUTPUT.put_line('formatted = ' || l_date );
END;
 /
DECLARE
*
ERROR at line 1:
ORA-01843: not a valid month
ORA-06512: at line 2

Strictly you don't NEED formatting, it's just that it is BEST PRACTICE.to use it.

 

by: runcsmeduncsPosted on 2004-06-09 at 08:15:50ID: 11270789

The difference between to_char and to_date is as follows:

TO_DATE: used to convert a number into a varchar2 format eg

SELECT TO_CHAR(123456)
FROM DUAL;

will convert the number 123456 into a varchar2 type string '123456'

TO_DATE: used to convert a number or varchar2 datatype into a date eg

SELECT TO_DATE (12122004, 'DD-MM-YYYY')
  FROM DUAL;

will convert the number 12122004 into a data with the format of: 12/12/2004.

When you do:

select to_date(sysdate)
from dual

the result is a date datatype with the format of: dd/mm/yyyy

If however you do:

Select to_char(sysdate)
from dual

the result is a varchar2 datatype with the format: 'DD-MON-YY'
so the results tell you the same but the format and datatype of each is different.

With respect to when to use both have a look at the following example!!!

say we have a string (varchar2) that is '1212Testerstring' and wanted to convert that into a data datatype that reads 12/12/2004  you could do the following:

SELECT TO_CHAR
          (TO_DATE (SUBSTR ('1212Testerstring', 0, 4), 'DD/MM'), 'DD/MM/YYYY' ) data_date
  FROM DUAL

The substr just extracts the 1st 4 numberic charactures from the string and returns a string '1212'.
We then perform a to_date conversion on the string '1212' to convert the string into a date datatype with format DD/MM so the result would be 12/12.
Finally if you wanted to change the date 12/12 into a varchar2 datatype and change the format of the date then we to_char it to return a string but in the format of dd/mm/yyyy. This will return a varchar2 datatype but with the format '12/12/2004'

Silly example i know but demonstrates how To_CHAR and TO_DATE can both be used and the differnece between them.

Hope that helps

Duncan

 

by: jay4Posted on 2004-06-09 at 22:54:45ID: 11276459

Thanx runcsmeduncs you have cleared me, the diff between to_char and to_date!!

 

by: runcsmeduncsPosted on 2004-06-10 at 01:09:11ID: 11277026

No worries.

I remember not being able to distinguish between the two when i first started with oracle.

Goood luck

Duncan

 

by: heikoPosted on 2004-06-11 at 02:49:28ID: 11287185

sorry, but your answer isnt right

TO_DATE is for converting strings into DATE-Type and not more
if you deliver a different type oracle is trying to convert them automaticaly. in this case you have database defaults used to format this string.
thats also the reason, why you will get same results as you has seen.
you can deliver a format (like 'mm-dd-yyyy HH24:mi:ss') to define how to interprete the string on first argument.

TO_CHAR has two functions
1. converting numbers into strings
this is usage without a format-parameter

2. converting DATE's into strings
for this you have to deliver a format-string like 'mm-dd-yyyy'

 

by: runcsmeduncsPosted on 2004-06-11 at 03:05:01ID: 11287233

Sorry reading back i have specified to_date twice.

The first statement

TO_DATE: used to convert a number into a varchar2 format

 should have been about to_char

That was my mistake and teaches me to read what i have just written.

 

by: noriegaaPosted on 2004-06-16 at 18:47:14ID: 11330650

Your first select statement
select to_char(sysdate)
from dual
is all right, but you need a mask to format the output, such as
Your first select statement
select to_char(sysdate,'dd-mon-yy hh24:mi:ss')
from dual

Your second statement
select to_date(sysdate)
from dual
is incorrect, since sysdate is already a date datatype and does not need to be converted.

I recommend that you visit the Oracle SQL Reference at otn.oracle.com and look at the datatype section.

Anthony Noriega, MSCS, BSSE, OCP

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...