come posso aggiungere 100 anni per una data in Advantage Database
-
25-09-2019 - |
Domanda
Ho un gruppo di record nel mio database Advantage che ha finito con l'anno 1909, invece di 2009. Come si può eseguire un'istruzione di aggiornamento che aggiungerà 100 anni per ciascuna di queste date? (Advantage mi sta dicendo che non c'è "str ()" la funzione, e non mi lascerà mese concatenate (Data) con "/".
Soluzione
Si potrebbe utilizzare il seguente
UPDATE mytable
SET mydate = CAST( TIMESTAMPADD( SQL_TSI_YEAR, 100, datefield ) as SQL_DATE )
WHERE YEAR( datefield ) = 1909
(se si dispone di un campo timestamp e non un campo data è possibile lasciare il cast ... AS SQL_DATE)
Per concatenare è necessario concatenare le stringhe per passare a una stringa è possibile utilizzare CAST o convertire
UPDATE mytable
SET datefield = CAST ( TRIM( CAST( MONTH(datefield) AS SQL_CHAR ) ) + '/' + TRIM( CAST( DAYOFMONTH( datefield ) AS SQL_CHAR ) ) + '/2009' AS SQL_DATE )
WHERE YEAR( datefield ) = 1909
(se si dispone di un campo timestamp e non un campo data è possibile lasciare il cast ... AS SQL_DATE, ma poi è necessario aggiungere nuovamente nel tempo)
Altri suggerimenti
Il mio SQL è arrugginito ma Advantage Database sembra sostenere DATEADD . Quindi ... uh ... qualcosa di simile?
UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'