Conversione da char a numero

di il
14 risposte

Conversione da char a numero

Buongiorno, non sono pratica di sql server, ma ho dei dati su questo db.

Ho un problema perché ho due campi char che in realtà dentro hanno una data nel formato 01/01/2000. Ho bisogno di fare un'operazione su tali campi e cioè trovare la differenza di giorni tra le due date e poi moltiplicare tale differenza per una quantità.

Ripeto che parto da campi che sono char.

Come posso fare? Vi prego aiutatemi

Grazie

Paola

14 Risposte

  • Re: Conversione da char a numero

    Potrebbe bastare la conversione implicita ,https://docs.microsoft.com/it-it/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
  • Re: Conversione da char a numero

    Pessima scelta quello del tipo stringa... esiste il tipo Data appositamente...

    Il formato è mm/gg/aaaa oppure gg/mm/aaaa ?

    Devi fare questi calcoli in una query o in tuo programma che ha letto i dati?
  • Re: Conversione da char a numero

    Comunque, supponendo delle date italiane gg/mm/aaaa (formato 105) e risultato in una query, potresti scrivere

    500*DATEDIFF(DAY, CONVERT(DATE, '15/03/2020', 105), CONVERT(DATE, '20/03/2020', 105))

    dove 500 è il valore di esempio che vuoi moltiplicare e le due date quelle che vuoi sottrarre
  • Re: Conversione da char a numero

    Ti ringrazio tantissimo per le risposte intanto,
    il formato è gg/mm/aaaa e devo fare questi calcoli in una query che poi andrà in una stored procedure.

    Assolutamente d'accordo con il fatto che sia una pessima scelta…


    Grazie grazie

    Paola
  • Re: Conversione da char a numero

    Se posso approfittare, visto che devo fare una cosa urgente...poi prometto che studierò cast e convert…
    partendo da un char col - (-1,000) mi serve il numero -1 per fare dei calcoli...idee???
    il segno mi da problemi

    Grazie
  • Re: Conversione da char a numero

    Non ho capito ... hai un altro campo char in cui c'è

    "-1,000"

    oppure

    "(-1,000)"

    ?

    Ci sono le parentesi o no?

    Ma usate solo campi char? Sapete che esistono altri tipi di dati?
  • Re: Conversione da char a numero

    Purtroppo ci mandano i dati così...non possiamo farci nulla….
    ho il valore senza parentesi…..

    Grazie per la pazienza
  • Re: Conversione da char a numero

    Salve,
    nel caso di valori di tipo char(n) nel formato '(-1,0000)', io prima rimuoverei le parentesi, trasformerei il separatore decimale nel separatore standard ISO, effettuerei il trim totale del char risultante, convertirei in numerico e quindi, finalmente porterei il risultato nel dominio degli interi,
    DECLARE @value char(10) = '(-1,0000)';
    SELECT CAST( CAST( LTRIM( RTRIM( REPLACE( REPLACE( REPLACE( @value, '(', '' ), ')', '' ), ',', '.' ) ) ) AS numeric ) AS int ) AS [Value];
    --<---------
    Value
    -----------
    -1
    salutoni
    --
    Andrea
  • Re: Conversione da char a numero

    Mi sembra che abbia detto che le parentesi non ci siano, gli spazi prima e dopo non creano problemi e non è detto che il valore finale debba essere un intero. Quindi farei

    SELECT CAST( REPLACE('-1,000', ',', '.') AS DECIMAL(10,5)) AS Valore
  • Re: Conversione da char a numero

    Grazie @Oregon,
    mi era sfuggita l'ultima riga
    salutoni
    --
    Andrea
  • Re: Conversione da char a numero

    Ciao Andrea ...
  • Re: Conversione da char a numero

    Grazie davvero…..grazie a voi ho risolto!!!!
  • Re: Conversione da char a numero

    E ora studia
  • Re: Conversione da char a numero

    Ahahhahah….si ora studio!!!
Devi accedere o registrarti per scrivere nel forum
14 risposte