2014-04-27 2 views
0

datadT가 datetime으로 저장된 다음 저장 프로 시저를 사용하여 데이터를 선택합니다.SQL Server : 날짜/시간과 올해의 현재 연도를 선택으로 대체하십시오.

누군가가 아래의 변환 결과에서 연도를 어떻게 바꿀 수 있는지 알려 주시면이 결과가 항상 현재 연도 (테이블에 저장된 연도와 관계 없음)가되도록 할 수 있습니까?

SELECT  dateID, 
      CONVERT(VARCHAR(11), dateDT, 106) AS dateDT, 
      CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort, 
      countries, 
      regions 
FROM  DaysFixed 
WHERE  countries LIKE '%'[email protected]+'%' 
OR   regions LIKE '%'[email protected]+'%' 
ORDER BY dateID 
FOR XML PATH('datesDT'), ELEMENTS, TYPE, ROOT('root') 

미리 감사드립니다. Mike.

답변

1

변환 후 연도를 변경할 수 있습니다. 다음은 날짜 형식에 대한 예는 다음과 같습니다

 CONVERT(VARCHAR(7), dateDT, 106) + CAST(year(getdate() as varchar(4)) AS dateDT, 
     STUFF(CONVERT(VARCHAR(10), dateDT, 126), 1, 4, CAST(year(getdate() as varchar(4))) 
      ) AS dateDTShort, 
+0

덕분에 많이,이 위대하다! STUFF는 무엇을합니까? – Mike

+1

Stuff는 문자열의 특정 부분 (위치로 정의 됨)을 다른 문자열로 바꿉니다. http://technet.microsoft.com/en-us/library/ms188043.aspx 문서를 참조하십시오. –

1
DECLARE @dt DATETIME = '2012-04-27 14:00:39.343' 

SELECT CAST(
     STUFF(
       CONVERT(VARCHAR(23), @dt,121) 
       ,1, 4, CAST(YEAR(GETDATE()) AS VARCHAR(4)) 
      ) 
      AS DATETIME) 

Result: 2014-04-27 14:00:39.343 
+0

고마워! – Mike

+0

도움이되어 기쁘게도 문제가 없습니다. –

관련 문제