2012-10-04 2 views
0

dd-mm-yyyy에 다음 명령을 사용하여 yyyy-mm-dd 형식으로 저장된 테이블에서 기존 SQL 날짜를 변환하려고합니다. 그렇게하는 동안 성공적으로 데이터 유형을 nvarchar으로 변환 할 수 있지만 날짜로 변환하면 yyyy-mm-dd과 동일한 이전 형식이 계속 수신됩니다. 여기SQL Server 날짜 캐스팅 및 형식 문제

쿼리

Select 
    Convert(date, CONVERT(VARCHAR(10), a.LogDateTime, 103), 103) AS LDate 
from sec.[Log] AS a 

나는 또한 다음 스크립트를 사용하여 날짜 nvarchar에서 변환하려고하지만, 동일하게 유지 될 않았다이다.

SELECT convert(date, '23/10/2016', 103) 

정확히 어떤 문제가있을 수 있습니까? 나는 데이터 형식을 변경하지 않고도 내 날짜를 영국 형식의 영국 형식으로 변환하려고합니다.

답변

2

날짜는 모든 텍스트 형식으로 저장되지 않습니다. DATETIME 값은 디스크 저장 영역의 8 바이트를 취하는 내부 형식으로 저장됩니다. 텍스트 형식으로 저장된 입니다.

FYI, yyyy-mm-dd는 미국 형식이 아닙니다. 이는 SQL Server 팀이 SQL Server Management Studio에서 날짜 값을 표시하기 위해 사용하기로 결정한 보편적으로 허용되는 모호하지 않은 표시 형식입니다.

특정 양식으로 표시해야하는 경우 Visual Studio에서 만든 데스크톱 응용 프로그램과 같은 디스플레이 계층에서 표시해야합니다. 불행히도 SSMS에서 기본 형식을 제어 할 수있는 설정이 없으므로 SSMS에서이 형식을 보려면 올바른 형식 (103)으로 변환해야합니다.

declare @d datetime 
set @d = '20120506' 
select CONVERT(char(10), @d, 103) -- or column instead of variable 
+0

+1 아주 철저한 대답. – Kermit

1
SELECT CONVERT (VARCHAR(15), logdatetime, 105) 
FROM sec.[log]