2014-04-02 3 views
1

저는 프로그래밍이 비교적 새롭습니다. 나는 테이블을 가지고 테이블에 직원이 회사에서 언제 시작했는지 보여주는 칼럼을 가지고 있습니다. 나는 프로 시저를 만들고 있는데 그 프로 시저 내에서 사용자 시작 날짜를 현재 연도로 바꾸려면 if 문이옵니다. 방금 계산 된 날짜가 오늘 이전 인 경우 다음 연도로 날짜를 변경하십시오. 질문이 완전히 명확하지 않거나 이전에 질문을 받았으면 고맙고 미안합니다.SQL에서 연도의 변경

+0

절차 적으로 생각하고 있습니다. 당신이 원하는 것은 미래에 그 날짜의 다음 기념일을 발견하고 데이트를하는 것입니다. "나는 올해를 조정 해달라고하고, 그 다음에 그 날짜가 과거라면 1 년을 더하고 싶다"라고 말하지 마십시오. –

+0

어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –

답변

0

나는 이것이 가장 우아한 해결책이라고 생각하지 않지만, 현재 연도로 대체하기 위해 날짜를 구분할 수 있습니다. 그런 다음 case 문을 사용하여 이미 통과 한 경우 다음 연도로 변경하십시오. 코드는 다음과 같습니다.

SELECT employee_name, 
    CASE 
     WHEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) < GETDATE() THEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())+1) 
     WHEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) >= GETDATE() THEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) 
    END AS anniversary_date 
FROM Employees 
+0

@Chris이 대답이 만족 스럽다면 청색 진드기를 부여하여 답이없는 질문 목록에서 질문을 제거하십시오. 그것이 당신이 찾고있는 것이 아니었다면,이 질문에 대한 해결책을 찾기 위해 april4181이나 다른 사용자가 알 수 있도록이 답변에 대한 의견을 통해 무엇을 개선해야하는지 설명하십시오. – mickmackusa