2017-11-06 6 views
0

, 원래 날짜가 같은 수 있습니다 : 2015년 7월 6일 태평양 서머 타임 오전 8시 35분 2초에게 그래서내가 시간대와 날짜를 캐스팅하기 위해 노력하고있어

MAX (CAST (LEFT (SIG.UserAddDate, 10) NVARCHAR AS))

: 내가 SQL Server의 공식을 사용하고

을 열 (UserAddDate)의 MAX 날짜를 갖고 싶어

이 작동하고 있습니다. 02/18/2016,하지만 원하지 않습니다. 이것을 nvarchar로 캐스팅하려면 DATETIME에 캐스팅하려고합니다. 그리고 캐스팅을 시도 할 때 다음 오류가 나타납니다. 문자열에서 날짜 및/또는 시간을 변환 할 때 변환하지 못했습니다.

누구나 아는 이유는 무엇입니까? , 고맙습니다.

+1

하는가하면 SQL Server 버전 지원 표준 SQL의'CAST (DATE AS MAX (SIG.UserAddDate))'? – dnoeth

+0

서버에서 날짜를 "18 일 중 2 일"또는 "2 월 18 일"으로 해석했을 수 있습니다. 그리고 18 개월이 지나면 무효가됩니다. 이상적인 상황은 데이터베이스의 "날짜 문자열"을 절대로 다룰 수 없다는 것입니다. – kirchner

답변

0

그냥 CAST를 사용할 수 있습니다. 이것은 AM, PM과 호환되어야합니다 :

CREATE TABLE #SIG (UserAddDate varchar(100)) --temp table 
INSERT INTO #SIG VALUES ('07/06/2015 08:35:02 AM PDT') 
         ,('07/06/2015 10:35:02 AM PDT') 
         ,('07/06/2015 02:35:02 PM PDT') --hour is lesser but is PM time 

SELECT MAX(CAST(LEFT(#SIG.UserAddDate, 22) as datetime)) AS MaxDateTime 
    FROM #SIG 

--DROP TABLE #SIG 

생산할 것인가 :

MaxDateTime 
2015-07-06 14:35:02.000