그래서이 테이블에는 int 형식의 날짜 열이 있습니다.int 20171116101856을 yyyymmddhhmmss 형식으로 변환하여 datediff 함수로 사용합니다.
last_run_date | last_run_time
20171116 | 100234
이 두 값을 datetime으로 변환하여 datediff 문에 사용하려고합니다.
이 내 선언문 last_run_time 값이 두 자리 시간 형식 101216에 있지만 경우에만이 있지만 작동
SELECT 1
FROM V_Jobs_All_Servers vjas
WHERE JobName='DailyReports_xxxx' and Step_Name='xxxx'
and DATEDIFF(hour, Convert(varchar,STUFF(STUFF(STUFF(STUFF(STUFF(cast(
Convert(varchar(100),vjas.last_run_date) + Convert(varchar(100),vjas.last_run_time) as varchar)
,5,0,'-'),8,0,'-'),11,0,' '),14,0,':'),17,0,':')), Getdate()) <3
의 한 자리 시간의 91316는 다음과 같은 오류와 함께 실패 할 때마다,이다
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
저는 SQL Server 2005를 사용 중입니다.
내가 대답을 구축하기 시작 유지하고, 왜 테이블이 같은 사람 건축가 지구는 것에 이후 자신에게 물어을 .. ... – pimbrouwers
음 .... 그 숫자는 정수에 비해 너무 큽니다. 당신은 무엇을 기대합니까? 나는 이런 식으로 날짜와 시간을 저장하는 팬이 아니다. 이것이 우리가 datetime 데이터 유형을 갖는 이유입니다. –
이 뷰는 msdb.dbo.sysjobsteps의 데이터를 가져오고이 뷰는 여기에서 사용되는 형식입니다. 나는 그것에 대해 할 수있는 일이 없습니다. – Markov