Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867

    [mysql] da varchar a timestamp

    Ciao a tutti,
    vi espongo rapidamente il mio problema:

    Ho un database che contiene dei dati vecchi e devo importarlo in un nuovo db cambiando il formato di alcuni dati.
    Il problema non sembra complesso ma qua arriviamo al problema, nel db vecchio le date sono salvate in un campo varchar nel formato YYYYmmdd e io devo inserirle in un campo int nel formato di un timestamp di 10 cifre.

    C'è modo di fare questa modifica della data cambiando il tipo della colonna in int e poi eseguendo una query che mi modifichi il campo senza dover passare da php ed estrarre e reinserire un record alla volta ???

    Grazieeeeeeeeee
    No pvt per sollecitare risposte, grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Dopo un bel week end di riflessione lo so che adesso mi sapete dare una mano

    Dai coraggio !!!!!!!
    No pvt per sollecitare risposte, grazie.

  3. #3
    se dovessi farlo io aggiungerei una colonna nuova INT(10) UNSIGNED

    Poi farei:
    codice:
    UPDATE tabella
    SET colonna_nuova = UNIX_TIMESTAMP(colonna_vecchia)
    se poi il risultato e' quello atteso eliminerei la colonna_vecchia. ovviamente avendo solo yyymmdd la data-ora in unix timestamp risultera' essere data + 00:00:00.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867

    non va

    Forse mi sfugge qualcosa, ti posto un esempio che secondo me è sbagliato cosi' magari mi illumini.

    io ho 20060130 nel senso di 30 gennaio 2006 facendo nel modo che mi hai suggerito mi restituisce 1091570400 che se non sbaglio rappresenta un'altra data.

    Puo' dipendere dal fatto che la mia data e' un varchar e quindi la funzione non riesce a interpretarla correttamente ? Non ho modo di dirle in che formato è la mia data ??

    Grazie
    No pvt per sollecitare risposte, grazie.

  5. #5
    Il formato timestamp 10 e' tipico di UNIX TIMESTAMP. quel numero che vedi e' la data in quel formato.

    Il fatto che sia un varchar o un numerico cambia nulla. Il nuovo formato di timestamp mysql e' uguale al formato DATE/TIME e non permette piu' di scegliere il numero di digit. Se vuoi trasformare la data varchar in una DATA in formato DATE (yyyy-mm-dd) devi settare il campo come DATE.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    io semplicemente dicevo che 1091570400 non rappresente la mia data, se faccio la conversione opposta mi viene 3 agosto 2004..... lo so che il formato è giusto.... ma non quadra
    No pvt per sollecitare risposte, grazie.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    ok risolto:

    ho creato 2 colonne, una date e una int in modo da capiare da varchar a date e poi applicare la funzione che dice piero e mettere l'output nel campo int.

    Grazie mille per il supporto

    No pvt per sollecitare risposte, grazie.

  8. #8
    Originariamente inviato da afurly
    io semplicemente dicevo che 1091570400 non rappresente la mia data, se faccio la conversione opposta mi viene 3 agosto 2004..... lo so che il formato è giusto.... ma non quadra
    non so che dirti.... la data e' quella del 4/8/2004.
    codice:
    select from_unixtime('1091570400');
    
    from_unixtime('1091570400')  
    2004-08-04 00:00:00

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.