Sometime we need to format date as per our need,. for e.g. sometimes we want to show date in form of JAN 05, 2012 etc. We can format date either in SQL server or we can format the date in code too. Here I will show you how we can change the date in SQL server based on a specific date format. first of all we will create function as:
CREATE FUNCTION dbo.funFormatDate (@Datetime DATETIME, @DateFormat VARCHAR(32))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @StringDate VARCHAR(32)
SET @StringDate = @DateFormat
IF (CHARINDEX ('YYYY',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'YYYY',DATENAME(YY, @Datetime))
IF (CHARINDEX ('YY',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'YY',RIGHT(DATENAME(YY, @Datetime),2))
IF (CHARINDEX ('Month',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'Month',DATENAME(MM, @Datetime))
IF (CHARINDEX ('MON',@StringDate COLLATE SQL_Latin1_General_CP1_CS_AS)>0)
SET @StringDate = REPLACE(@StringDate, 'MON',LEFT(UPPER(DATENAME(MM, @Datetime)),3))
IF (CHARINDEX ('Mon',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'Mon',LEFT(DATENAME(MM, @Datetime),3))
IF (CHARINDEX ('MM',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'MM',RIGHT('0'+CONVERT(VARCHAR,DATEPART(MM, @Datetime)),2))
IF (CHARINDEX ('M',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'M',CONVERT(VARCHAR,DATEPART(MM, @Datetime)))
IF (CHARINDEX ('DD',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'DD',RIGHT('0'+DATENAME(DD, @Datetime),2))
IF (CHARINDEX ('D',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'D',DATENAME(DD, @Datetime))
RETURN @StringDate
END
GO
Now we have created function time to test it by providing date and format we want, here I have created function for a limited format, we can extend the function and can add more format as we want. Here is test result when we use this function with different format.
-----------------------Test Function-----------------------------
SELECT dbo.funFormatDate (GETDATE (), 'MM/DD/YYYY') -- 01/05/2012
SELECT dbo.funFormatDate (GETDATE (), 'DD/MM/YYYY') -- 05/01/2012
SELECT dbo.funFormatDate (GETDATE (), 'M/DD/YYYY') -- 1/05/2012
SELECT dbo.funFormatDate (GETDATE (), 'M/D/YYYY') -- 1/5/2012
SELECT dbo.funFormatDate (GETDATE (), 'M/D/YY') -- 1/5/12
SELECT dbo.funFormatDate (GETDATE (), 'MM/DD/YY') -- 01/05/12
SELECT dbo.funFormatDate(GETDATE (),'MON DD,YYYY')-- JAN 05, 2012
SELECT dbo.funFormatDate (GETDATE (), 'Mon DD, YYYY') -- Jan 05, 2012
SELECT dbo.funFormatDate (GETDATE (),'Month DD, YYYY') -- January 05, 2012
SELECT dbo.funFormatDate (GETDATE (),'YYYY/MM/DD') -- 2012/01/05
SELECT dbo.funFormatDate (GETDATE (), 'YYYYMMDD') -- 20120105
SELECT dbo.funFormatDate (GETDATE (),'YYYY-MM-DD') -- 2012-01-05
SELECT dbo.funFormatDate (GETDATE (), 'YY.MM.DD') -- 12.01.05
We can use this function anywhere in query, sub-query, stored procedure etc, we just need to pass the parameter as Date and date format we want in return.
Comments
Post a Comment