Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

What Does DB@ Date function return for invalid date string

Posted on 2013-12-04
10
Medium Priority
?
434 Views
Last Modified: 2013-12-09
The column mycolumn in table mytable is varchar(10) and has entries like 01/01/2013. However some rows have invalid data in mycolumn, e.g. 'garbage'

The following sql statement shows IsDate=1 for good dates but does not show 0 for invalid dates. What am I doing wrong?

Select mycolumn,
Date(mycolumn) as mydate,
case when Date(mycolumn) is null then 0 else 1 end as IsDate
from mytable
0
Comment
Question by:rmk
[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
  • 6
  • 4
10 Comments
 
LVL 46

Expert Comment

by:Kent Olsen
ID: 39696186
Hi rmk,

To some extent, It'll depend on which version of DB2 you're using.  

On LUW, passing an illegal value into the DATE function throws an exception.  SQL0180N -- The syntax of the string representation of a datetime value is incorrect.


Kent
0
 

Author Comment

by:rmk
ID: 39696385
Kent, I guess that means that I can't detect and handle the error in the SELECT statement.
0
 
LVL 46

Expert Comment

by:Kent Olsen
ID: 39696423
Not easily.  DB2 will allow quite a few formats, YYYYDDD, MM/DD/YYYY, integer, etc. and figure out the correct date from the string, but it expects something valid.

One often used option is to write a UDF to do the validity testing.  This allows you the flexibility to validate and/or convert a lot of date formats, even custom ones.

What date format are you expecting?  I'll be glad to whip up a UDF for you.


Kent
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 46

Expert Comment

by:Kent Olsen
ID: 39696438
Actually, you can also write a small stored procedure to do it automatically.  Write an exception handler that returns NULL for an invalid date.  Of course, the procedure might not be very flexible with regards to your needs.
0
 

Author Comment

by:rmk
ID: 39696615
The table actually a staging table for importing data, so it can have virtually anything in the columns and all the columns are defined as varchar. I'm simply trying to determine if there is a valid date string in mycolumn.
My SELECT statement is actually a pass through query in a Microsoft Access front end. I think the easiest solution for me is going to be put that query inside a native Microsoft Access query where I can then use the VBA IsDate function on mycolumn to get what I want.
0
 
LVL 46

Expert Comment

by:Kent Olsen
ID: 39696626
Probably.  Though I'm not a big Access fan.  (Too much data in my world.)

SQL Server, MySQL, etc. all have date validation functions.  I'm thinking that it's time for DB2 to catch up and add them to the system repertoire.


Kent
0
 

Author Comment

by:rmk
ID: 39706147
I've requested that this question be deleted for the following reason:

No one has provided an answer and I have found a work around
0
 
LVL 46

Expert Comment

by:Kent Olsen
ID: 39705931
The answer may not be what you wanted to hear, but it's the correct answer.
0
 

Author Comment

by:rmk
ID: 39706075
I respectfully disagree. No one answered the question about what does the Date function return when it causes error SQL0180N. It has to return some value because it shows some value in the result set.
0
 
LVL 46

Accepted Solution

by:
Kent Olsen earned 2000 total points
ID: 39706096
Hi rmk,

It doesn't return anything, it throws an exception and sets the error code to SQL0180N.  

It would be up to the application's error handler to trap the error and substitute NULL (or any other desired value) and continue processing.


Kent
0

Featured Post

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

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

November 2009 Recently, a question came up in the DB2 forum regarding the date format in DB2 UDB for AS/400.  Apparently in UDB LUW (Linux/Unix/Windows), the date format is a system-wide setting, and is not controlled at the session level.  I'm n…
Recursive SQL in UDB/LUW (it really isn't that hard to do) Recursive SQL is most often used to convert columns to rows or rows to columns.  A previous article described the process of converting rows to columns.  This article will build off of th…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

715 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