0
votes

Ajouter une colonne de date basée sur une autre colonne de date SQL BQ

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.


0 commentaires

3 Réponses :


1
votes

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);


2 commentaires

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



1
votes

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.


0 commentaires

1
votes

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 .


0 commentaires