2017-11-21 22 views
0

start_time 및 end_time 필드가있는 레코드가있는 테이블을 쿼리해야합니다. 그래서 나는 시간 데이터 형식으로 필요 오전 9시 반쿼리에서 hh : mmAM [PM] 형식의 nvarchar를 시간으로 변환하는 방법

내가 전이나이 분야에 비교 후 작업을 수행해야하고, 할 : 그들의 데이터 형식은 NVARCHAR (100)이 예제 같은 형식입니다 . (내가 잘못하면 나를 바로 잡으십시오.) 쿼리에서 start_time 및 end_time을 어떻게 변환하여 비교할 수 있습니까?

참고 : 나는 변환 (시간, START_TIME)을 시도했지만 문자열에서 오류 메시지가 날짜 및/또는 시간으로 변환 할 때 변환이 실패 얻을 수있다.

+1

예제로 시간을 변환해도 문제가 없습니다. 전환 (시간, '09 : 30AM ')을 선택하십시오. 이것은 아마도 어딘가에 나쁜 데이터가 있음을 의미합니다 ... 적절한 데이터 유형을 사용하는 것이 왜 중요한지에 대한 견고한 예입니다. –

+0

별도 : [계산 된 열 유지] (https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-computed-column-definition-transact-sql)를 사용하면 도움이 될 수 있습니다. . 물론 올바른 데이터 유형을 사용하는 것이 더 좋습니다. – HABO

답변

1

그것은 단순히이다 :

SELECT CONVERT(TIME, '09:30AM') 

또는

CAST('09:30AM' as time) 

converision 당신이 어딘가에 나쁜 데이터를 의미 할 경우에 대비 NULL을 반환 2012+가 있다면, 나는 TRY_CONVERT을 운영자 추천 것이라고 실패하면 커버 피시가 실패했습니다.

SELECT TRY_CONVERT(TIME, '09:30AMBadDataHere')