자유게시판

[DBMS] MSSQL 오전/오후를 24시간 표기법으로 변경

코리아 0 2,240 2020.09.15 08:08

오래된 데이터들에 날짜형식이 varchar 형태로 아래와 같이 들어있었다.
2008-01-01 오전 12:01:00
2008-01-01 오후 12:01:00
오전 12 시라니... 저거슨 낮12시인가 자정인가...
그냥 24시간제로 바꾸자!

소스에 대한 로직은 이렇다.
1. 오후면서 오후 12시가 아닌가? 그럼 12시간을 더해주자
    : 오후 1시 ==> 13시
2. 오전 12시인가? 그렇다면 12를 빼주자
    :오전 12시 00시
3. 해당 조건이 아니면 그냥 오전/오후만 빼주면 끝!

select UFN_ConvertDate('2020-01-01 오전 12:01:00') => 2020-01-01 00:01:00
select UFN_ConvertDate('2020-01-01 오전 1:01:00') => 2020-01-01 01:01:00
select UFN_ConvertDate('2020-01-01 오후 12:01:00') => 2020-01-01 12:01:00
select UFN_ConvertDate('2020-01-01 오후 1:01:00') => 2020-01-01 13:01:00


CREATE FUNCTION [dbo].[UFN_ConvertDate] (@date AS VARCHAR(50))
  RETURNS datetime
AS
BEGIN
  DECLARE @OutDate datetime
 
  SET @OutDate = CASE WHEN  CHARINDEX('오후',@date)>0 and CHARINDEX('오후 12',@date)<=0 THEN
            DATEADD(HH,12,CONVERT (DATETIME, REPLACE(@date,'오후','')))
          WHEN CHARINDEX('오전 12',@date)>0 THEN
            DATEADD(HH,-12,CONVERT (DATETIME, REPLACE(@date,'오전','')))
                    ELSE CONVERT (DATETIME,REPLACE(REPLACE(@date,'오전',''),'오후','') )
                    END
 
  RETURN @OutDate
END

Comments

Category
State
  • 현재 접속자 40 명
  • 오늘 방문자 1,162 명
  • 어제 방문자 2,480 명
  • 최대 방문자 7,216 명
  • 전체 방문자 1,649,899 명
  • 전체 게시물 33,530 개
  • 전체 댓글수 19 개
  • 전체 회원수 517 명
Facebook Twitter GooglePlus KakaoStory NaverBand