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 "/".

È stato utile?

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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top