Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Mysql: on update current timestamp

    Ciao a tutti,
    sono alle prese con un "problema" legato all'aggiornamento date in MySql. Ho un campo di tipo timestamp che, al momento della creazione è stato definito con attributo "ON UPDATE CURRENT TIMESTAMP"; ora ho la necessità di rimuovere questa clausula, ma nè sulla documentazione ufficiale, nè in giro per la rete (questo forum compreso) sono stato in grado di trovare una risposta.

    Qualcuno sa se è possibile rimuovere tale attributo attraverso un "ALTER TABLE", senza dover quindi rigenerare la struttura dati?

    Grazie a tutti in anticipo

  2. #2
    cambia il tipo di campo....

    ALTER TABLE tabella CHANGE campo campo DATETIME NOT NULL

    fai una prova su una copia della tabella.

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

  3. #3
    Innanzitutto grazie per la risposta,
    il mio problema è che volevo comunque mantenere la proprietà DEFAULT CURRENT TIMESTAMP e non credo sia possibile cambiando il tipo di campo. Girando ho trovato un "ON UPDATE SET NULL", ma aggiungendolo in coda alla query mi da un errore di sintassi... Credo sia un normale attributo, possibile che io debba posizionarlo non in fondo alla stringa SQL oppure è indifferente?

  4. #4
    Dovresti chiarire lo scopo della modifica che vuoi fare.

    Dalla versione 4.1.3 il formato del timestamp e' "identico" a quello di datetime.

    Il timestamp mysql ha ragione di essere se si vuole aggiornare in modo automatico la data ad ogni modifica del record. Prima della 4.1.3 aggiornava solo ed esclusivamente il primo campo timestamp che trovava, il primo in ordine di elenco. Dopo si deve dichiarare quale autoaggiornare.

    Quindi un timestamp NON autoaggiornante e' tuttora identico ad un DATETIME anche nel formato.

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

  5. #5
    Ti chiarisco la mia situazione: ho una registrazione utente classica, che memorizza anche la data di iscrizione. Tale data, attualmente, è creata automaticamente poiché ho creato la tabella con "CURRENT TIMESTAMP" come valore di default per il campo

    Ora quando dici che il formato timestamp è identico al datetime (uso una versione successiva alla 5.0, quindi non dovrei avere problemi), intendi che utilizza lo unix timestamp? Perché c'è la possibilità che io debba ordinare gli utenti a livello di query di selezione per questo campo data; se mi dici che non supporta il valore "current timestamp" di default non è un grosso problema, al momento dell'inserimento gli specifico io la data; non vorrei però dover creare una funzione che ordini i campi una volta estratti, ma vorrei farlo a livello di query. Sai se la datetime offre questa possibilità?

    Grazie infinite per la disponibilità e la chiarezza

    Lorenzo

  6. #6
    ecco la cosa che mi sono astenuto prima dal nominare unix timestamp....

    timestamp mysql e unix timestamp scrivono lo stesso valore ma con due formati assolutamente differenti.

    QUindi prima di tutto chiarire:

    se si tratta di unix timestamp il campo e' un numerico ed il valore rappresenta il numero dei secondi a partire dal 1-1-1970

    Se si tratta di timestamp mysql il formato e' yyyy-mm-dd hh:mm:ss ed e' ora identico al formato DATETIME.

    A prescindere dal formato. La data di iscrizione e' tale e quindi immodificabile e percio' non e' appropriato l'uso del timestamp mysql autoaggiornante.

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

  7. #7
    perfetto sei stato chiarissimo!

    Grazie mille, ripiegherò sul datetime! Per l'ordinamento, sai se è "legale" per MySql fare una cosa del tipo:

    SELECT *
    FROM table
    ORDER BY UNIX_TIMESTAMP(data)

    Grazie ancora!

  8. #8
    Originariamente inviato da zoostation
    perfetto sei stato chiarissimo!

    Grazie mille, ripiegherò sul datetime! Per l'ordinamento, sai se è "legale" per MySql fare una cosa del tipo:

    SELECT *
    FROM table
    ORDER BY UNIX_TIMESTAMP(data)

    Grazie ancora!
    e' "legale" anche:

    ORDER BY data

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

  9. #9
    perfetto, grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.