2012-01-24 2 views
1

DateTime 열이 24 시간 형식으로 변환하려는 SQL Server 2008 테이블이 있습니다. 산출SQL Server 날짜/시간 열에서 24h 형식으로 변환하지 못함

select CONVERT(datetime, GetDate(), 121) 

:

2012-01-24 15:22:27.340 

완벽한을

정식 지침의 라인을 따라 뭔가를 사용하는 것입니다. 내가 잘못

2012-01-24 03:25:47.933 
2012-01-24 03:25:46.917 
2012-01-24 03:25:46.547 
2012-01-24 03:25:46.543 
2012-01-24 03:25:46.543 

를하고있는 중이 야 무엇 :

select top(5) CONVERT(datetime, LogTable.Timestamp, 121) from LogTable 
order by LogTable.Id DESC 

을 우리는 얻을 : 좋아, 그럼이 지식을 적용,의는 CONVERT 표현에 대한 열 GetDate()을 대체 할 수? CONVERTGetDate() 함수의 출력과 반대로 열에서 작동하도록하려면 어떻게 표현식을 작성해야합니까?

+1

정확히 무엇이 잘못 되었나요? 예상치 못한 결과가 나오는 이유는 무엇입니까? –

+0

LogTable.Timestamp의 실제 데이터는 무엇입니까? VarChar (또는 nvarchar) 열입니까, 아니면 이미 DateTime입니까? – AllenG

+2

LogTable.Timestamp 데이터가 실제로 3am이 아닙니까? –

답변

1

나는이 문제에 대한 해결책을 찾았다. SQL 표에 타임 스탬프를 쓰는 서비스는 나쁜 형식화를 통해 필드에 "알몸"datetimes을 작성하여 효과적으로 언제든지 "AM"으로 표시되도록했습니다 그들은 도착했다.

필드에 24 시간의 datetimes를 쓰기 위해 소스 코드를 다시 작성할 수 있었고, 현재 예상대로 수행 중입니다. 나는 내 직감이 정확하다는 것을 알기 때문에 안심하고, 그것이 근원이었던 잘못된 서비스였습니다.

제안과 안내에 감사드립니다. 매우 감사드립니다.

1

24h 형식은 문자열에만 중요합니다. 사용하는 경우 :

convert(datetime, ... 

datetime으로 변환 중입니다. 24 시간을 표시하려면, 당신은 같은 문자열로 변환해야합니다 : 당신이 VARCHAR 컬럼으로 시작하는 경우

convert(varchar(24), ... 

, 당신은 24 시간 형식으로 표시 할 VARCHAR로 다시 날짜에 convert 수 있습니다. 예를 들어, AM/PM의 VARCHAR로 변환하고 24 시간에 표시 : 여기

select convert(varchar(16), convert(datetime, 'sep 01 2011 01:23PM', 100), 120) 

은, 스타일 (100)는 구문 분석에 사용됩니다. 스타일 120은 서식 지정에 사용됩니다.

+0

알겠습니다. 그러나 24h 형식이 문자열에만 적용되는 경우 CONVERT (datetime, GetDate(), 121)는 24h 형식의 날짜가됩니다. –

+0

클라이언트가 24 시간을 표시하도록 구성되었을 수 있습니다. 'select getdate()'도 24 시간을 보여줍니까? – Andomar

관련 문제