?
Solved

converting string to date

Posted on 2014-01-27
9
Medium Priority
?
351 Views
Last Modified: 2014-01-28
dear all
i have one table having 2 tables
period  varchar2   ,  
pay_date  date

period storing values of periods like this format
'01 - 2005'    ( to refer to jan 2005)
pay date is empty
how i would update all pay_date to be last date of the month
if period = '01 - 2005'  then pay_date = '31-jan-05'

thanx
0
Comment
Question by:NiceMan331
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
9 Comments
 
LVL 74

Accepted Solution

by:
sdstuber earned 2000 total points
ID: 39814226
update yourtable set pay_date = last_day(to_date(period,'mm - yyyy'))
0
 

Author Comment

by:NiceMan331
ID: 39814268
it is ok for a single raw
but when i update all , it return with error
not a valid month
how do i check if one raw is out of the said format ?
0
 

Author Comment

by:NiceMan331
ID: 39814314
in other word
let update the fileds which has correct format , then we will see the null value to correct it
0
Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

 
LVL 74

Expert Comment

by:sdstuber
ID: 39814837
select * from yourtable where not regexp_like(period,'[0-9]{2} - [0-9]{4}')
0
 
LVL 35

Expert Comment

by:johnsone
ID: 39814895
That regular express will only check if it is numeric, not if it is a valid month.  For example, this has one valid row and one invalid:

WITH t (period) 
     AS (SELECT '01 - 2014' 
         FROM   dual 
         UNION ALL 
         SELECT '13 - 2014' 
         FROM   dual) 
SELECT * 
FROM   t 
WHERE  NOT Regexp_like(period, '[0-9]{2} - [0-9]{4}') 

Open in new window


However, the invalid row will not be returned.

The way that I would do this is with a PL/SQL block, trap the error and ignore the row with the bad date.  Will be slower, but will get around the problem.  Alternately,  you could write a function that was a couple of lines long to check for a valid date and use that to find valid records.
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 39814986
you're right, it's not specific enough, but I figured it would probably point in the right direction.

To be precise though, this should work

select * from yourtable where not regexp_like(period,'(0[1-9]|1[012]) - [0-9]{4}')
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 39814990
really though, this "how to find invalid data" should be a new question anyway
0
 

Author Comment

by:NiceMan331
ID: 39815858
thanx for both
i got the invalid data in another way
the period was updated its value from table containing all periods values
so , select * from my_table where period not in (select period from period_table)
then it done
an execuse from johnson , i have to accept the solution of sdstubar with full thanx
is it fare for you ?

really though, this "how to find invalid data" should be a new question anyway

shall i open a new question for it ?
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 39815860
you've already gotten your answer so don't bother now
0

Featured Post

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Working with Network Access Control Lists in Oracle 11g (part 1) Part 2: http://www.e-e.com/A_9074.html So, you upgraded to a shiny new 11g database and all of a sudden every program that used UTL_MAIL, UTL_SMTP, UTL_TCP, UTL_HTTP or any oth…
Using SQL Scripts we can save all the SQL queries as files that we use very frequently on our database later point of time. This is one of the feature present under SQL Workshop in Oracle Application Express.
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
Suggested Courses

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question