Forum Discussion

SrabaniD's avatar
SrabaniD
Copper Contributor
May 06, 2024

isdate function in SQL server

I am using  isdate function to verify  after extracting the first 8 chars from a sting.

isdate() returned 1 with the example below and my following code failed  to  calculated a Datediff().


Declare @Mystr varchar(29)
SET @Mystr='05/020/2'
Select IsDate('05/020/2')

 

Is there any other similar function  in SQL?

Thanks in advance for any idea.

4 Replies

  • Avinashrnrox's avatar
    Avinashrnrox
    Copper Contributor
    /* Use these sessions settings. */
    SET LANGUAGE us_english;
    SET DATEFORMAT mdy;
    /* Expression in mdy dateformat */
    SELECT ISDATE('04/15/2008'); --Returns 1.
    /* Expression in mdy dateformat */
    SELECT ISDATE('04-15-2008'); --Returns 1.
    /* Expression in mdy dateformat */
    SELECT ISDATE('04.15.2008'); --Returns 1.
    /* Expression in myd dateformat */
    SELECT ISDATE('04/2008/15'); --Returns 1.

    SET DATEFORMAT mdy;
    SELECT ISDATE('15/04/2008'); --Returns 0.
    SET DATEFORMAT mdy;
    SELECT ISDATE('15/2008/04'); --Returns 0.
    SET DATEFORMAT mdy;
    SELECT ISDATE('2008/15/04'); --Returns 0.
    SET DATEFORMAT mdy;
    SELECT ISDATE('2008/04/15'); --Returns 1.

    SET DATEFORMAT dmy;
    SELECT ISDATE('15/04/2008'); --Returns 1.
    SET DATEFORMAT dym;
    SELECT ISDATE('15/2008/04'); --Returns 1.
    SET DATEFORMAT ydm;
    SELECT ISDATE('2008/15/04'); --Returns 1.
    SET DATEFORMAT ymd;
    SELECT ISDATE('2008/04/15'); --Returns 1.

    SET LANGUAGE English;
    SELECT ISDATE('15/04/2008'); --Returns 0.
    SET LANGUAGE Hungarian;
    SELECT ISDATE('15/2008/04'); --Returns 0.
    SET LANGUAGE Swedish;
    SELECT ISDATE('2008/15/04'); --Returns 0.
    SET LANGUAGE Italian;
    SELECT ISDATE('2008/04/15'); --Returns 1.

    /* Return to these sessions settings. */
    SET LANGUAGE us_english;
    SET DATEFORMAT mdy;
    • Avinashrnrox's avatar
      Avinashrnrox
      Copper Contributor
      If you are using US Format then kindly pass on the correct "DateFormat" for using the DATEDIFF() T-SQL functions.
  • olafhelper's avatar
    olafhelper
    Bronze Contributor
    For me with German setting your example returns correct 0.
    Which language setting do your SQL login have?
    • SrabaniD's avatar
      SrabaniD
      Copper Contributor
      Thanks for your reply. Mine is set to English.

Resources