T-SQL 프로 시저가 작동하지 않음, varchar에서 날짜로의 변환 문제

이삭

이 SP를 실행하면 다음
메시지 가 표시됩니다. Msg 241, Level 16, State 1, Procedure PED_SP_PED_Updates, Line 22 Conversion failed when converting date and / or time from string string.

실행은 다음과 같습니다.

exec dbo.ped_sp_ped_updates
@CURRENTHICN='111111111A',
@DATERECEIVED = '20140904',
@FIELDTOBECHANGED='FIRST_NAME_MEMBER',
@CURRENTFIELDVALUE = 'MARY',
@NEWFIELDVALUE = 'MARYTEST',
@REQUESTEDBY = 'IPISORS',
@ID=156

왜 그런지 모르겠습니다. 비교를 위해 varchar를 날짜로 다시 캐스팅하고 있습니다.
참고하시기 바랍니다 , 나는 아무 문제가 그것을 할 수있는 더 좋은 방법을 말한 적이되고있다, 그러나 그것은 내가 할 수 있다면, 내 학습 (내가 생각하는) 더 도움이 될 적어도 '도'왜 내 현재 시저의 ISN에 관한 직접적인 답변을 얻을 것이다 작동하지 않습니다. 다른 것, 더 나은 것 등을 수행해야하는 이유에 대한 유용한 아이디어 외에도.

ALTER PROCEDURE [dbo].[PED_SP_PED_Updates]
    @CurrentHicn VARCHAR(500),
    @DateReceived VARCHAR(20),
    @FieldToBeChanged VARCHAR(500),
    @CurrentFieldValue VARCHAR(500),
    @NewFieldValue VARCHAR (500),
    @RequestedBy VARCHAR(10),
    @ID int

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    DECLARE @CurrentDBNote VARCHAR(MAX)
    DECLARE @NewNote VARCHAR(MAX)
    DECLARE @CountofHicn INT

    SET @NEWNOTE = 'Isaac Pisors | ' + GetDate() + ' | ' 
            + 'Changing field: ' + @FieldToBeChanged + ' from ' + @CurrentFieldValue + ' to ' + @NewFieldValue
            + ', per ' + @RequestedBy + ' request.  Also changing any related DOCS/FAXES records to correspond'

    SET @CurrentDBNote=
        (SELECT NOTES_GENERAL FROM PED_APPLICATIONS WHERE HICN_MEDICARE_NUMBER=@CurrentHicn AND (Cast(ISNULL(DATE_RECEIVED,'1900-01-01') as DATE)=CAST(@DateReceived AS DATE)))

    --NOW ADD THE TWO:
    SET @NewNote = @CurrentDBNote + CHAR(13) + @CurrentDBNote

    --SEE IF THERE IS STILL A MATCHING RECORD
    SET @CountofHicn=
        (SELECT COUNT(*) FROM PED_APPLICATIONS WHERE HICN_MEDICARE_NUMBER=@CurrentHicn AND (CAST(ISNULL(DATE_RECEIVED,'1900-01-01') AS DATE)=CAST(@DateReceived AS DATE)))

    IF @CountofHicn=0  --THERE IS NO LONGER A MATCHING RECORD - INSERT THAT NOTE AND CALL IT A DAY
        BEGIN   
            UPDATE PED_PEDUPDATES SET COMPLETEDON=GetDate(), COMPLETEDBY='SSIS',
            EXCEPTIONNOTE='Could not locate any records where HICN is ' + @CurrentHicn + ' and Date Received is ' + CAST(@DateReceived AS VARCHAR)
            WHERE [ID]=@ID
        END
    ELSE                --GO AHEAD AND DO THE UPDATE
        BEGIN
            UPDATE PED_APPLICATIONS SET @FieldToBeChanged = @NewFieldValue
            WHERE HICN_MEDICARE_NUMBER=@CurrentHicn AND (CAST(ISNULL(DATE_RECEIVED,'1900-01-01') AS DATE)=CAST(@DateReceived AS DATE))
        END

    IF @FieldToBeChanged='HICN_MEDICARE_NUMBER' --THEN WE HAVE TO UPDATE DOCS TABLE, TOO
        BEGIN
            UPDATE PED_DOCS SET HICN_MEDICARE_NUMBER=@NewFieldValue
            WHERE
                (HICN_MEDICARE_NUMBER=@CurrentFieldValue AND (CAST(ISNULL(DATE_RECEIVED,'1900-01-01') AS DATE)=@DateReceived)) or
                (HICN_MEDICARE_NUMBER=@CurrentFieldValue AND DATE_RECEIVED IS NULL)
        END

    IF @FieldToBeChanged='HICN_MEDICARE_NUMBER'     --THEN OUR WHERE CLAUSE-HICN IS THE *NEW* HICN
        BEGIN
            UPDATE PED_APPLICATIONS SET NOTES_GENERAL=@NewNote
            WHERE HICN_MEDICARE_NUMBER=@NewFieldValue AND (CAST(ISNULL(DATE_RECEIVED,'1900-01-01') AS DATE)=CAST(@DateReceived AS DATE))
        END
    ELSE                                            --ELSE OUR WHERE CLAUSE-HICN IS THE *OLD* HICN
        BEGIN
            UPDATE PED_APPLICATIONS SET NOTES_GENERAL=@NewNote
            WHERE HICN_MEDICARE_NUMBER=@CurrentHicn AND (CAST(ISNULL(DATE_RECEIVED,'1900-01-01') AS DATE)=CAST(@DateReceived AS DATE))
        END

    --FINALLY, UPDATE RECORD AS COMPLETE:
    UPDATE PED_PEDUPDATES SET COMPLETEDON=GetDate(),COMPLETEDBY='SSIS' WHERE [ID]=@ID


END


GO
Matt Johnson-Pint

단기 수정

  • 대신 CAST(@DateReceived AS DATE), 사용CONVERT(date, @DateReceived, 112)

    값 112는 yyyymmdd사용중인 형식화 된 varchar 의 스타일 코드입니다 . 자세한 내용은 캐스트 및 변환 문서 를 참조하십시오.

  • 또한 DATE_RECEIVED테이블 열의 모든 값 이 올바른 형식인지 확인해야합니다. 변환 할 수없는 값이 하나라도이 오류가 발생합니다.

적절한 수정

  • @DateReceiveddate대신으로 프로 시저에 전달되어야합니다 varchar.

  • DATE_RECEIVED테이블에 필드가되어야 선언 A와 date대신의 varchar.

일반적으로 해당 목적을위한 기본 유형이있는 경우 데이터베이스에서 날짜 또는 시간을 문자열로 처리하지 마십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL 저장 프로 시저가 문자열 값을 반환하지 않음

분류에서Dev

날짜 변환이 제대로 작동하지 않음

분류에서Dev

Javascript 날짜-문자열 메서드가 제대로 작동하지 않음

분류에서Dev

MySQL 저장 프로 시저 커서가 작동하지 않음

분류에서Dev

SQL INSERT INTO가 제대로 작동하지 않음 (Java에서)

분류에서Dev

이 저장 프로 시저를 T-SQL에서 MySQL 구문으로 변환 하시겠습니까?

분류에서Dev

SQL Server : 저장 프로 시저에서 가변 날짜 계산

분류에서Dev

환경 변수가 제대로 작동하지 않음

분류에서Dev

KG에서 lbs 로의 변환이 제대로 작동하지 않음

분류에서Dev

as. 날짜가 R에서 문자 날짜를 날짜로 변환하지 않습니다.

분류에서Dev

문자열에서 '날짜'유형으로의 변환이 유효하지 않음

분류에서Dev

문자열에서 날짜로의 변환은 UTC 날짜를 유지하지 않습니다.

분류에서Dev

문자열 날짜를 날짜로 변환하고 데이터 프레임에서 시간 삭제

분류에서Dev

Excel 날짜를 요일로 변환 : 1 행 이후에 작동하지 않음

분류에서Dev

또 다른 "DBNull 유형에서 유효하지 않은 날짜 유형으로의 변환"문제

분류에서Dev

Snowflake 저장 프로 시저에서 대문자 SQL 문이 작동하지 않습니다.

분류에서Dev

부트 스트랩을 사용하여 SQL에서 C #으로의 날짜 변환 문제

분류에서Dev

저장 프로 시저가 MVC5에서 값을 반환하지 않음

분류에서Dev

아래 SQL 서버에 매개 변수가 있지만 작동하지 않는 저장 프로 시저에 중첩 된 함수

분류에서Dev

Spring 자동 유형 변환이 문자열에서 날짜로 작동하지 않습니다.

분류에서Dev

날짜 비교가 제대로 작동하지 않음

분류에서Dev

문자열을 날짜로 변환 (CEST는 잘 작동하고 GMT + 02 : 00은 작동하지 않음)

분류에서Dev

Sql Server Management Studio에 저장 프로 시저가 표시되지 않음

분류에서Dev

저장 프로 시저에서 varchar를 숫자로 변환하는 동안 오류가 발생했습니다.

분류에서Dev

날짜가 불완전한 SQL에서 문자열을 날짜로 변환

분류에서Dev

CSS 변수에서 SVG 스트로크가 제대로 작동하지 않음

분류에서Dev

VARCHAR에서 DATE 로의 변환 문제

분류에서Dev

PHP의 날짜 기능이 제대로 작동하지 않음

분류에서Dev

FindComponent가 프로 시저에서 작동하지 않습니다.

Related 관련 기사

  1. 1

    SQL 저장 프로 시저가 문자열 값을 반환하지 않음

  2. 2

    날짜 변환이 제대로 작동하지 않음

  3. 3

    Javascript 날짜-문자열 메서드가 제대로 작동하지 않음

  4. 4

    MySQL 저장 프로 시저 커서가 작동하지 않음

  5. 5

    SQL INSERT INTO가 제대로 작동하지 않음 (Java에서)

  6. 6

    이 저장 프로 시저를 T-SQL에서 MySQL 구문으로 변환 하시겠습니까?

  7. 7

    SQL Server : 저장 프로 시저에서 가변 날짜 계산

  8. 8

    환경 변수가 제대로 작동하지 않음

  9. 9

    KG에서 lbs 로의 변환이 제대로 작동하지 않음

  10. 10

    as. 날짜가 R에서 문자 날짜를 날짜로 변환하지 않습니다.

  11. 11

    문자열에서 '날짜'유형으로의 변환이 유효하지 않음

  12. 12

    문자열에서 날짜로의 변환은 UTC 날짜를 유지하지 않습니다.

  13. 13

    문자열 날짜를 날짜로 변환하고 데이터 프레임에서 시간 삭제

  14. 14

    Excel 날짜를 요일로 변환 : 1 행 이후에 작동하지 않음

  15. 15

    또 다른 "DBNull 유형에서 유효하지 않은 날짜 유형으로의 변환"문제

  16. 16

    Snowflake 저장 프로 시저에서 대문자 SQL 문이 작동하지 않습니다.

  17. 17

    부트 스트랩을 사용하여 SQL에서 C #으로의 날짜 변환 문제

  18. 18

    저장 프로 시저가 MVC5에서 값을 반환하지 않음

  19. 19

    아래 SQL 서버에 매개 변수가 있지만 작동하지 않는 저장 프로 시저에 중첩 된 함수

  20. 20

    Spring 자동 유형 변환이 문자열에서 날짜로 작동하지 않습니다.

  21. 21

    날짜 비교가 제대로 작동하지 않음

  22. 22

    문자열을 날짜로 변환 (CEST는 잘 작동하고 GMT + 02 : 00은 작동하지 않음)

  23. 23

    Sql Server Management Studio에 저장 프로 시저가 표시되지 않음

  24. 24

    저장 프로 시저에서 varchar를 숫자로 변환하는 동안 오류가 발생했습니다.

  25. 25

    날짜가 불완전한 SQL에서 문자열을 날짜로 변환

  26. 26

    CSS 변수에서 SVG 스트로크가 제대로 작동하지 않음

  27. 27

    VARCHAR에서 DATE 로의 변환 문제

  28. 28

    PHP의 날짜 기능이 제대로 작동하지 않음

  29. 29

    FindComponent가 프로 시저에서 작동하지 않습니다.

뜨겁다태그

보관