오라클을 쓰다가 문득 날짜포맷이 MSSQL에서 지원하는게 좀 약하지 않나하는 생각이 들었다.
그리고 jquery datepicker 의 경우 허용된 날만 표기를 해줄때 형식이 dd-m-yyyy이다
이런 형식은 mssql에서는 보통 convert 를 써서
select convert(char(10), getdate(), 126) 이런식으로 변경을 해주는데 세번째 인자값에 따라서 형식을 달라지게 마련이다
하지만 이런 형식말고 특별하게 형식을 바꿀때 써야할 필요가 있어서 구글링을 해보니 딱 맞는 형식의 함수가 있어
블로깅을 한다.
/****** Object: UserDefinedFunction [dbo].[fnFormatDate] Script Date: 2014-05-28 오후 4:27:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fnFormatDate] (@Datetime DATETIME, @FormatMask VARCHAR(32))
RETURNS VARCHAR(32)
AS
BEGIN
DECLARE @StringDate VARCHAR(32)
SET @StringDate = @FormatMask
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
My sql table 이 crashed 되었을때 (0) | 2016.07.05 |
---|---|
UDF 함수를 만들때 GetDate 함수를 쓸수 없을때 (0) | 2013.05.10 |
MS SQL 에 IF - Else 문 사용하기 (0) | 2011.01.24 |
테이블에 컬럼 추가하기 (0) | 2011.01.14 |
MSSQL 로그삭제 (0) | 2009.08.22 |