Home Forums SQL Server 2008 T-SQL (SS2K8) CONCATINATE 3 COLUMNS (int) INTO A WORKABLE DATE FORMAT RE: CONCATINATE 3 COLUMNS (int) INTO A WORKABLE DATE FORMAT

  • Possinator (9/12/2012)


    Lowell (9/12/2012)


    personally, since you have integers, i'd stick with using the dATEADD() functions:

    /*

    2012-02-01 00:00:00.000

    2012-03-01 00:00:00.000

    2012-04-01 00:00:00.000

    */

    CREATE TABLE PS_TestForOnline

    (

    DAY_ INT,

    MONTH_ INT,

    YEAR_ INT

    );

    INSERT INTO PS_TestForOnline

    VALUES(1,1,2012);

    INSERT INTO PS_TestForOnline

    VALUES(1,2,2012);

    INSERT INTO PS_TestForOnline

    VALUES(1,3,2012);

    SELECT DATEADD(dd,DAY_ -1,

    DATEADD(mm,MONTH_ -1,

    DATEADD(yy,(YEAR_ - 1900) ,0))),

    * FROM PS_TestForOnline

    Hi Lowell - yours is adding 1 to the month and day since the year is already 01-01:

    (No column name)DAY_MONTH_YEAR_

    2012-02-02 00:00:00.000112012

    2012-03-02 00:00:00.000122012

    2012-04-02 00:00:00.000132012

    You could subtract the extract day:

    SELECT DATEADD(dd,DAY_ - 1, DATEADD(mm,MONTH_ - 1, DATEADD(yy,(YEAR_ - 1900) ,0)))

    FROM #PS_TestForOnline

    or use a string concat:

    select cast(convert (char(4), p.YEAR_) + '-' + convert(char(2), p.MONTH_) + '-' + convert(char(2),p.DAY_) as date)

    from PS_TestForOnline p

    Actually, it isn't. Take a closer look, it is actually subtracting 1 for the day or month entered in the table.