J'ai une colonne de dates dans ma table (appelée org_day). J'essaye d'ajouter une nouvelle colonne qui représente le lendemain, c'est-à-dire day_after = org_day + day (ou 24 heures) (pour toutes les lignes de org_day)
D'après ce que j'ai lu, la fonction DATE_ADD de SQL ne fonctionne pas travailler sur toute la colonne, alors essayez de faire quelque chose comme: DATE_ADD (org_day, INTERVAL 24 HOUR) ou DATE_ADD (DATE org_day, INTERVAL 24 HEURE) ne fonctionnent pas. Les exemples habituels qui fonctionnent ressemblent à: DATE_ADD (DATE '2019-12-22', INTERVAL 1 jour), Mais je souhaite effectuer cette opération sur toute la colonne, pas à une date constante. J'apprécie toute aide.
3 Réponses :
Pour mettre à jour la colonne entière, vous devez tout définir sur cette colonne. Essayez ceci, espérons que cela a résolu votre problème ...
UPDATE nom_table SET nom_colonne = DATE_ADD (var, intervalle);
Merci! Où dois-je mettre cette ligne UPDATE? Dans une nouvelle requête (après avec la table AS?), Dans la même requête, cela n'a pas fonctionné à partir de ce que j'ai essayé jusqu'à présent.
nouvelle requête SQL sur ur db
Vous pouvez essayer ceci:
CREATE OR REPLACE TABLE mydataset.mytable AS SELECT org_day, DATE_ADD(org_day, INTERVAL 1 day) day_after FROM mydataset.mytable;
Cette instruction ci-dessus modifiera la table existante en ajoutant une nouvelle colonne, sans supprimer les données existantes.
Je suggérerais d'utiliser une vue:
create view v_t as select t.*, date_add(org_day, interval 1 day) as day_after from t;
Si vous voulez toujours que la nouvelle colonne soit synchronisée avec la colonne existante, une vue garantit que les données sont cohérentes. La valeur est calculée lorsque vous interrogez les données .