2016-06-30 2 views
0

데이터를 삽입하려고 할 때 저장 프로 시저가 있습니다. 나는이 오류가 위에 내가 코드를 실행하면날짜가 잘못되었습니다. 삽입 - 문자열에서 날짜 및/또는 시간을 변환 할 때 변환하지 못했습니다.

INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total]) 
    SELECT 
     CONVERT(DATE, getdate()) AS 'Date', 
     DATENAME(yyyy, getdate()) AS 'Year', 
     DATENAME(mm, getdate()) AS 'Month', 
     COUNT([BG_BUG_ID]) AS 'Total' 
    FROM 
     [maint_maintenance_db].[td].[BUG] 
    WHERE 
     YEAR(DETECTION_DATE]) = YEAR(getdate()) 
     AND MONTH([DETECTION_DATE]) = MONTH(getdate()) 

:이 삽입이다 나는 그것이 작동 CAST를 사용하는 코드를 변경하면

Msg 241, Level 16, State 1, Procedure usp_TC_TESTCYCL_ID_COUNT_PILOT_UCPATH, Line 10
Conversion failed when converting date and/or time from character string.

하지만 제대로 값을 반환하지 않습니다. 다음은 코드입니다.

INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total]) 
    SELECT 
     CAST(getdate() AS Date), 
     CAST(getdate() AS datetime), 
     CAST(getdate() AS datetime), 
     COUNT([BG_BUG_ID]) AS 'Total' 
    FROM 
     [maint_maintenance_db].[td].[BUG] 
    WHERE 
     YEAR(DETECTION_DATE]) = YEAR(getdate()) 
     AND MONTH([DETECTION_DATE]) = MONTH(getdate()) 

어떻게 작동합니까? 어떤 도움을 주셔서 감사합니다!

감사합니다.

+0

"MONTH name"또는 "MOnth numer"를 얻으려고 삼가십니까?, 테이블에 대한 열 정의는 무엇입니까? DEFECTS_MAINTENANCE – thepanch

+0

처음에는 마지막 두 열 사이의 INSERT 문에 쉼표가 누락되었습니다. – BJones

+0

어떤 데이터 타입이'DETECTION_DATE'입니까? – BJones

답변

1

[달]은 datetime 유형입니다.
캐스트가 작동하는 이유 : CAST (날짜로 GETDATE()) 당신의 INSERT에서

당신이 암시 날짜에 2 자리 숫자로 변환하려고하고 그 실패로 변환 사용.

,datename(mm,getdate()) AS 'Month' 

월을 정수 또는 char (2)로 변경하면 모두 설정해야합니다.

관련 문제