Usuário com melhor resposta
Invalid DateTime data type

Pergunta
-
Boa tarde,
Estou importando dados de arquivos DBF, utilizando o SSIS do Visual Studio 2013. Um dos campos contém valores inválidos para o tipo DateTime (00/01/1900). Já tentei diversas táticas para impedir que o pacote leia a data inválida, mas não consigo.
Quando executo o pacote, recebo as seguintes mensagens de erro:
[Tab_Cursos_Pedido [345]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80004005 Description: "Valor de caractere inválido para especificação de coerção.".
[Tab_Cursos_Pedido [345]] Error: There was an error with Tab_Cursos_Pedido.Inputs[OLE DB Destination Input].Columns[dt_Pedido_DtCredDev] on Tab_Cursos_Pedido.Inputs[OLE DB Destination Input]. The column status returned was: "Conversion failed because the data value overflowed the specified type.".
Qualquer ajuda será muito bem-vinda.
Grato,
Benedito.
Benedito R. Almeida Filho - BI
Respostas
-
Benedito,
Não sei se já tentou usar o componente Derived Column. Se não tentou ainda, use-o antes de inserir os dados na tabela de destino no DataFlow Task.
O código abaixo considera que seu campo é um DateTime e coloca NULL para datas menores que '1900-01-01' ou quando o valor (convertido em String) é igual a '1900-01-00'
( (DT_WSTR,10)[dt_Pedido_DtCredDev]== "1900-01-00" || (DT_Date)[dt_Pedido_DtCredDev] <(DT_DATE)"1900-1-1") ? NULL(DT_DATE) : (DT_Date)[dt_Pedido_DtCredDev]
Espero que ajude.
Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
- Sugerido como Resposta Eduardo Gomes Pereira quinta-feira, 9 de abril de 2015 20:14
- Marcado como Resposta Benedito Almeida sexta-feira, 10 de abril de 2015 19:08
Todas as Respostas
-
Benedito,
Não sei se já tentou usar o componente Derived Column. Se não tentou ainda, use-o antes de inserir os dados na tabela de destino no DataFlow Task.
O código abaixo considera que seu campo é um DateTime e coloca NULL para datas menores que '1900-01-01' ou quando o valor (convertido em String) é igual a '1900-01-00'
( (DT_WSTR,10)[dt_Pedido_DtCredDev]== "1900-01-00" || (DT_Date)[dt_Pedido_DtCredDev] <(DT_DATE)"1900-1-1") ? NULL(DT_DATE) : (DT_Date)[dt_Pedido_DtCredDev]
Espero que ajude.
Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
- Sugerido como Resposta Eduardo Gomes Pereira quinta-feira, 9 de abril de 2015 20:14
- Marcado como Resposta Benedito Almeida sexta-feira, 10 de abril de 2015 19:08
-
-
-