J'ai une table avec une colonne entière qui contient des entiers. Je sais que ces entiers étaient auparavant des valeurs datetime. Je souhaite mettre à jour toutes les valeurs de cette colonne comme datetimes. Il y a plus de 1000 lignes. J'ai changé cette colonne d'un INT à varchar car toutes les erreurs que j'ai reçues ne m'aimaient pas passer d'un INT à DATETIME mais j'ai le même problème avec le type de données varchar.
Exemples de valeurs dans la colonne: 43873, 40706, 43873, ect
J'ai essayé les requêtes suivantes:
UPDATE WORKER SET INT_TIME = DATEFROMPARTS(INT_TIME,1,1); UPDATE WORKER SET INT_TIME = CONVERT(datetime,INT_TIME,107);
Je reçois des erreurs comme
La conversion a échoué lors de la conversion de la date et / ou de l'heure à partir du caractère chaîne.
INT_TIME est la colonne que j'essaie de mettre à jour toutes les valeurs à une date / heure:
3 Réponses :
Ceux-ci ressemblent au format Excel. Cela suggère quelque chose comme:
select dateadd(day, col, '1899-12-30')
Que se passe-t-il ici? Cela ne mettra pas à jour la colonne, n'est-ce pas?
@WilliamStahl. . . Non. Mais là encore, vous avez une colonne INTEGER donc vous allez échouer si vous essayez de définir la valeur sur une DATE. Cela vous montre la conversion appropriée.
Vous pouvez utiliser la fonction dateadd () :
alter table worker
alter column int_time DATETIME
update worker
set int_time = dateadd(day, t.int_time, 0)
Vous pouvez utiliser l'instruction update pour mettre à jour, avant de devoir modifier définition de table aussi:
select dateadd(day, t.int_time, 0) as joining_date from tabel t;
0 ont une date par défaut 1900-01-01 00: 00: 00.000 p>
Que se passe-t-il ici? Cela ne mettra pas à jour la colonne, n'est-ce pas?
ALTER TABLE [dbo].[WORKER] ALTER COLUMN [INT_TIME] DATETIME This statement alters the integer column to a datetime column and parses the values automatically.
Quels dbms utilisez-vous? (En ce qui concerne la date et l'heure, de nombreux produits sont loin d'être conformes à la norme ANSI SQL. Par exemple, DATEFROMPARTS et CONVERT sont spécifiques au produit.)
J'utilise Microsoft SQL Server Studio