Tuesday 28 January 2014

Get Multitype datetime format in sql server

-- PRINT dbo.FN_FormatDateTime(Getdate(), 'LONGDATE')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'LONGDATEANDTIME')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'SHORTDATE')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'SHORTDATEANDTIME')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'UNIXTIMESTAMP')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'YYYYMMDD')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'YYYY-MM-DD')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'YYMMDD')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'YY-MM-DD')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'MMDDYY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'MM-DD-YY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'MM/DD/YY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'MM/DD/YYYY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'DDMMYY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'DD-MM-YY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'DD/MM/YY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'DD/MM/YYYY')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'HH:MM:SS 24')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'HH:MM 24')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'HH:MM:SS 12')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'HH:MM 12')
-- PRINT dbo.FN_FormatDateTime(Getdate(), 'ELSE')


CREATE FUNCTION [dbo].[FN_FormatDateTime]
(
    @dt DATETIME,
    @format VARCHAR(16)
)
RETURNS VARCHAR(64)
AS
BEGIN
    DECLARE @dtVC VARCHAR(64)
    SELECT @dtVC = CASE @format

    WHEN 'LONGDATE' THEN

        DATENAME(dw, @dt)
        + ',' + SPACE(1) + DATENAME(m, @dt)
        + SPACE(1) + CAST(DAY(@dt) AS VARCHAR(2))
        + ',' + SPACE(1) + CAST(YEAR(@dt) AS CHAR(4))

    WHEN 'LONGDATEANDTIME' THEN

        DATENAME(dw, @dt)
        + ',' + SPACE(1) + DATENAME(m, @dt)
        + SPACE(1) + CAST(DAY(@dt) AS VARCHAR(2))
        + ',' + SPACE(1) + CAST(YEAR(@dt) AS CHAR(4))
        + SPACE(1) + RIGHT(CONVERT(CHAR(20),
        @dt - CONVERT(DATETIME, CONVERT(CHAR(8),
        @dt, 112)), 22), 11)

    WHEN 'SHORTDATE' THEN

        LEFT(CONVERT(CHAR(19), @dt, 0), 11)

    WHEN 'SHORTDATEANDTIME' THEN

        REPLACE(REPLACE(CONVERT(CHAR(19), @dt, 0),
            'AM', ' AM'), 'PM', ' PM')

    WHEN 'UNIXTIMESTAMP' THEN

        CAST(DATEDIFF(SECOND, '19700101', @dt)
        AS VARCHAR(64))

    WHEN 'YYYYMMDD' THEN

        CONVERT(CHAR(8), @dt, 112)

    WHEN 'YYYY-MM-DD' THEN

        CONVERT(CHAR(10), @dt, 23)

    WHEN 'YYMMDD' THEN

        CONVERT(VARCHAR(8), @dt, 12)

    WHEN 'YY-MM-DD' THEN

        STUFF(STUFF(CONVERT(VARCHAR(8), @dt, 12),
        5, 0, '-'), 3, 0, '-')

    WHEN 'MMDDYY' THEN

        REPLACE(CONVERT(CHAR(8), @dt, 10), '-', SPACE(0))

    WHEN 'MM-DD-YY' THEN

        CONVERT(CHAR(8), @dt, 10)

    WHEN 'MM/DD/YY' THEN

        CONVERT(CHAR(8), @dt, 1)

    WHEN 'MM/DD/YYYY' THEN

        CONVERT(CHAR(10), @dt, 101)

    WHEN 'DDMMYY' THEN

        REPLACE(CONVERT(CHAR(8), @dt, 3), '/', SPACE(0))

    WHEN 'DD-MM-YY' THEN

        REPLACE(CONVERT(CHAR(8), @dt, 3), '/', '-')

    WHEN 'DD/MM/YY' THEN

        CONVERT(CHAR(8), @dt, 3)

    WHEN 'DD/MM/YYYY' THEN

        CONVERT(CHAR(10), @dt, 103)

    WHEN 'HH:MM:SS 24' THEN

        CONVERT(CHAR(8), @dt, 8)

    WHEN 'HH:MM 24' THEN

        LEFT(CONVERT(VARCHAR(8), @dt, 8), 5)

    WHEN 'HH:MM:SS 12' THEN

        LTRIM(RIGHT(CONVERT(VARCHAR(20), @dt, 22), 11))

    WHEN 'HH:MM 12' THEN

        LTRIM(SUBSTRING(CONVERT(
        VARCHAR(20), @dt, 22), 10, 5)
        + RIGHT(CONVERT(VARCHAR(20), @dt, 22), 3))

    ELSE

        'Invalid format specified'

    END
    RETURN @dtVC
END

Split Multiple Strings and Insert to table.

--    Exec pr_str '6*88*2*10,7*99*4*9'

Create Procedure [dbo].[pr_str] @MultipleData Varchar(6000)
As

Declare @SplitMultipleData Varchar(50),@SplitMultipleDataToIndivisual Varchar(50)
Declare @Data1 BigInt,@Data2 NVarchar(50),@Data3 BigInt,@Data4 BigInt,@Counter BigInt


Declare MultipleData Cursor For 
Select Distinct String As D1D2D3D4 From FN_Split(@MultipleData,',') 
Open MultipleData                         
Fetch Next From MultipleData InTo @SplitMultipleData 
While @@FETCH_STATUS = 0                                 
Begin 
   

    Set @Counter = 1

    Declare SplitOnebyOne Cursor For 
    Select String As ParticularData From FN_Split(@SplitMultipleData,'*') 
    Open SplitOnebyOne                         
    Fetch Next From SplitOnebyOne InTo @SplitMultipleDataToIndivisual 
    While @@FETCH_STATUS = 0                                 
    Begin 
        If (@Counter=1)       
            Set @Data1 = Cast(@SplitMultipleDataToIndivisual As BigInt)

        If (@Counter=2)
            Set @Data2 = Cast(@SplitMultipleDataToIndivisual As NVarchar)

        If (@Counter=3)
            Set @Data3 = Cast(@SplitMultipleDataToIndivisual As BigInt)
           
        If (@Counter=4)
            Set @Data4 = Cast(@SplitMultipleDataToIndivisual As BigInt)

        Set @Counter = @Counter + 1   
   
   
        Fetch Next From SplitOnebyOne InTo @SplitMultipleDataToIndivisual 
    End                     
    Close SplitOnebyOne                           
    Deallocate SplitOnebyOne                             


insert into OMG (S_Name,S_Age,S_Sex,S_Hobbies) values
    ( @Data1 ,@Data2,@Data3, @Data4)


    Fetch Next From MultipleData InTo @SplitMultipleData 
End                     
Close MultipleData                           
Deallocate MultipleData


--    Select * FROM OMG


--  Truncate Table OMG