Я получаю следующую ошибку
Не удалось выполнить преобразование при преобразовании даты и / или времени из строки символов
Я не могу заставить его работать должным образом, пожалуйстапомогите мне, вот мой код (не позорьте мой цикл, мне просто нужно, чтобы он работал).
Дело в том, что у меня есть закрытый список с идентификаторами контрактов и таблица с разными датами и датами, называемая #PERIODO
, она содержит тип datetime
.
WHILE (SELECT TOP 1 FECHA1 FROM #PERIODO) > 0
BEGIN
SET @MES_ANTERIOR = (SELECT TOP 1 FECHA1 FROM #PERIODO ORDER BY FECHA1 ASC)
SET @MES_EN_CURSO = (SELECT TOP 1 B.FECHA1 FROM (SELECT TOP 2 A.FECHA1 FROM #PERIODO A ORDER BY FECHA1 ASC ) B ORDER BY B.FECHA1 DESC)
SET @MES_3 = (SELECT TOP 1 FECHA3 FROM #PERIODO ORDER BY FECHA1 ASC)
SET @MES_4 = (SELECT TOP 1 B.FECHA3 FROM (SELECT TOP 2 A.FECHA3 FROM #PERIODO A ORDER BY FECHA3 ASC ) B ORDER BY B.FECHA3 DESC)
SET @MES_ANT = LEFT(CONVERT(VARCHAR(8),@MES_ANTERIOR,112),8) -- SELECT @MES_ANT
SET @MES_CURR = LEFT(CONVERT(VARCHAR(8),@MES_EN_CURSO,112),8) -- SELECT @MES_CURR
EXEC('IF OBJECT_ID(''WORK.DBO.OPERACIONES_ABIF_'+@MES_CURR+''', ''U'') IS NOT NULL
DROP TABLE WORK.DBO.OPERACIONES_ABIF_'+@MES_CURR+' ')
SET @SQL1 = 'SELECT DISTINCT
A.*
INTO WORK.DBO.OPERACIONES_ABIF_'+@MES_CURR+'
FROM BDGESTION.DBO.BASE_RIESGOS_PROD_ALTAIR_'+@MES_CURR+' A WHERE '
SET @SQL2 = ' A.NUM_OPERACION IN (
SELECT
B.NUM_CONTRATO
FROM (
SELECT NUM_CONTRATO
FROM
( SELECT * FROM #OPER WHERE FECHA_INICIO IS NOT NULL) H
WHERE H.FECHA_INICIO < CAST(CONVERT(VARCHAR(12),'+@MES_EN_CURSO+',23) AS VARCHAR )
AND H.FECHA_INICIO >= CAST(CONVERT(VARCHAR(12),'+@MES_ANTERIOR+',23) AS VARCHAR )
) B
WHERE
B.NUM_CONTRATO IS NOT NULL ) '
EXEC (@SQL1 + @SQL2)
DELETE FROM #PERIODO
WHERE FECHA1 = @MES_ANTERIOR
END