Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 371
  • Last Modified:

MS SQL 2012 Problem with converting date

Hi All

I've adapted the following from a question I asked on here to convert nvarchar to a date into a new table:

SELECT *
INTO T_1213_Pres_Start_Date
FROM (
        SELECT *, convert(smalldatetime,Pres_Start, 103) as Pres_Start_date
        FROM T_1213_OnlySSN
        WHERE ISDATE(Pres_Start) = 1
     ) as Pres_Start_Date;

The resulting table doesn't have all the records in it that I would expect, e.g. for one record, the original Pres_Start was 26/01/2013 and that record isn't copied over.  I really don't understand why as I've used "103" to signify a British date format.

Please could someone tell me where I'm going wrong?

Thanks for your help.

Sarah
0
ScuzzyJo
Asked:
ScuzzyJo
  • 3
  • 3
1 Solution
 
Louis01Commented:
Precede you statement with
SET DATEFORMAT dmy;
0
 
ScuzzyJoAuthor Commented:
Hi Louis

That works perfectly, thanks.  Presumably, if I put it at the beginning of the query, it will apply all the way through and I won't have to keep typing it?

Thanks
Sarah
0
 
Pratima PharandeCommented:
try this

CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
0
A proven path to a career in data science

At Springboard, we know how to get you a job in data science. With Springboard’s Data Science Career Track, you’ll master data science  with a curriculum built by industry experts. You’ll work on real projects, and get 1-on-1 mentorship from a data scientist.

 
Louis01Commented:
Hi Sarah
Setting the DATEFORMAT this way only makes it valid for that session.

You can set it globally for the server as follows:
EXEC sp_configure 'default language', 23 ; --23 = British English

OR for the user:
In Object Explorer, right-click a server and select Properties.
Click the Misc server settings node.
In the Default language for users box, choose the language in which Microsoft SQL Server should display system messages. The default language is English. You want British English.

Louis
0
 
ScuzzyJoAuthor Commented:
Hi

Thanks, Pratima, but Louis beat you to it.

Louis, I think it will be OK for the session for now.

Thanks for your help.

I'll be back in about 2 mins with a different question, no doubt - the joys of learning something new!

Sarah
0
 
ScuzzyJoAuthor Commented:
Louis answered really quickly and his solution worked with no problems.  Fantastic result!
0
 
Louis01Commented:
Thanks Sarah, any time!
Louis
p.s. Forgot to say: The reason for the SQL failing in the first place was on the ISDATE function. Unlike CONVERT where you can state the format (103 for dmy for instance) of the input or output, ISDATE uses the format dictated by the 'default language' setting of the server.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now