2017-02-01 5 views
0

J'utilise cette requête:La conversion a échoué lorsque la date de conversion avec DATEADD

INSERT INTO Registro_EQ (Codigo, Fechtran, Fechaini, Fechaexp, IDCONF, Descripcion, Marca, Modelo, Serie, ConLista, Porcentaje_cl, SinLista, Porcentaje_sl, Movible, 
      Porcentaje_mv, Edificio, Porcentaje_ed, Automatico, Exceso, Porcentaje_ex, Asignacion, Estatus, IDUsuario) 
SELECT DATEADD(year, 1, Fechaini) as Fecha, DATEADD(year, 1, Fechaexp) as Fecha2, 
     [Codigo] , [Fechtran], [IDCONF], [Descripcion], [Marca], [Modelo], [Serie], [ConLista], [Porcentaje_cl], [SinLista], [Porcentaje_sl], [Movible], 
     [Porcentaje_mv], [Edificio], [Porcentaje_ed], [Automatico], [Exceso], [Porcentaje_ex], [Asignacion], [Estatus], [IDUsuario] 
    FROM [Pru].[dbo].[Registro_EQ] 
    WHERE Fechaini >= '2016-01-01' AND Fechaini < '2017-01-01' 

Quand je lance me envoyer le message suivant:

Échec de la conversion date et/ou le temps de chaîne de caractères .

Je sais que c'est datetime, mais je n'ai pas trouvé la réponse.

+0

Vous devez identifier les types de données de tous les champs que vous pensez être des dates. Par exemple, quel type de données est 'Fechaini' –

Répondre

0

La commande sur Insérer dans est Codigo, Fechtran, Fechaini, Fechaexp, IDCONF et dans le Select la commande est différente, Fecha, Fecha2, Codigo, Fechtran, IDCONF.

Vous insérez donc probablement des données dans des colonnes incorrectes.

+0

J'espère que c'était ce que vous essayiez de dire. C'était tellement flou que j'en ai réécrit une partie. –

0

La cause la plus probable de votre problème est que Fechaini est stockée sous la forme d'une chaîne de caractères plutôt que d'une date. C'est le mauvais type de données. Vous devez utiliser les types de données intégrés appropriés, sauf si vous avez une bonne raison de ne pas le faire.

Dans SQL Server 2012+, vous pouvez voir les valeurs qui sont à l'origine d'un problème:

select Fechaini 
from [Pru].[dbo].[Registro_EQ] 
where try_convert(date, Fechaini) is null; 

Vous devez ensuite corriger vos données. Le meilleur moyen serait de changer les données au type correct (un type date ou date/heure).

0

1er exécuter la requête de sélection sans l'insert, si l'erreur disparaît alors que vous insérez la date de format incorrect de la sélection à votre table cible

2 si vous avez l'erreur de la requête de sélection, vous devez vous assurer le format du champ "fechaini" est la date, s'il n'est pas sûr que toutes les données contenues sont au format de date et ne devrait pas contenir de chaîne vide.