날짜/시간 캐스트 또는 변환?

날짜/시간(Microsoft SQL Server)에 대해 "Cast" 또는 "Convert" 중 무엇을 선택해야 합니까?


MSDN 사양을 살펴보았습니다. 언뜻 보기에는 구문을 제외하면 아무런 차이가 없는 것 같다:

CAST 구문:

CAST ( expression AS data_type [ ( length ) ] )

CONVERT의 구문:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

또한 CAST는 ANSI 표준이므로 서로 다른 데이터베이스 플랫폼에서 더 쉽게 이동할 수 있습니다.

해결책

'convert'는 선택적 매개 변수 'style'을 가지며, 'cast' 대신 'convert'를 사용하는 것이 좋습니다. 그것은 혼란을 피하는 데 도움이 된다. 예를 들어 cast('20130302&#39)를 날짜로 쓴다면 무엇을 얻을 수 있을까요? 3월 2일인가 2월 3일인가?

또한 날짜를 문자열로 캐스팅할 때 특정 형식을 사용하려면 'convert'를 사용해야 합니다.

해설 (6)

게시한 MSDN 사양 링크에서 자세히 읽어보시면 G 섹션 아래에 답변이 나와 있습니다.

G. Using CAST and CONVERT with datetime data

다음 예제에서는 현재 날짜와 시간을 표시하고 CAST를 사용하여 현재 날짜와 시간을 문자 데이터 형식으로 변경한 다음 CONVERT 디스플레이를 사용하여 ISO 8901 형식으로 표시합니다.

SELECT 
   GETDATE() AS UnconvertedDateTime,
   CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
   CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601  ;
GO

여기 결과 집합이 있습니다.

UnconvertedDateTime       UsingCast                       UsingConvertTo_ISO8601

----------------------- ------------------------------ ------------------------------

2006-04-18 09:58:04.570   Apr 18 2006 9:58AM              2006-04-18T09:58:04.570

(해당되는 행 1개)

차이를 분명히 알 수 있습니다.

갱신하다

확인: ** http://blog.sqlauthority.com/2012/11/21/sql-server-display-datetime-in-specific-format-sql-in-sixty-seconds-033-video/

해설 (2)