Visualizzazione risultati 1 fino 7 di 7

Discussione: [MySQL] Problema tipo tabella

  1. #1
    Guest

    Predefinito [MySQL] Problema tipo tabella

    Ciao a tutti, ho un piccolo problema con una tabella.
    Il campo che ho chiamato date dovrebbe contenere il "numero" generato dalla funzione time() di PHP. Adesso, mi stavo chiedendo se sarebbe possibile farlo fare a MySQL. Ovvero se esiste un tipo di campo che supporti la funzione time() di PHP e se sia possibile farla creare automaticamente a MySQL invece che da un file PHP scrivere time().
    Grazie mille, Saluti Davide! :)

  2. #2
    Kevinoo non è connesso Utente giovane
    Data registrazione
    14-05-2007
    Residenza
    Burano (Venezia)
    Messaggi
    94

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    time()
    in SQL esiste il tipo timestamp che crea una stringa del tipo 2011-03-19 23:04:41 quando viene eseguita la query.

    Per creare una tabella con un campo di questo tipo:

    Codice:
    CREATE TABLE tabela (
    `campoTimeStamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    );
    Saluti,
    Kevin
    "sempre avanti mai indietro, nemmeno per prendere la rincorsa!"

    Associazione Vogaepara Burano

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    In aggiunta a quanto detto da @Kevinoo (che permette di inserire il timestamp corrente, ma solo al momento della creazione del record), può esserti utile la funzione NOW() (che puoi invece usare anche in caso di aggiornamento, o per confrontare i dati con il timestamp attuale).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    Guest

    Predefinito

    Ecco ho trovato quello che volevo cioè UNIX_TIMESTAMP(), ma non ho ancora capito di che tipo deve essere la tabella. Grazie!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    In aggiunta a quanto detto da @Kevinoo (che permette di inserire il timestamp corrente, ma solo al momento della creazione del record), può esserti utile la funzione NOW() (che puoi invece usare anche in caso di aggiornamento, o per confrontare i dati con il timestamp attuale).

    Stammi bene...
    Ragazzi attenti,
    se escludiamo il caso del timestamp (che è un campo un pò "particolare") e della relativa funzione UNIX_TIMESTAMP, i campi con le date non possono assumere valori di default che non siano delle costanti.

    Quindi NOW() (e altre...) può essere usato in una query ma non come valore di default di un campo.

    http://dev.mysql.com/doc/refman/5.0/...-defaults.html
    The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column. See Section 10.3.1.1, “TIMESTAMP Properties”.
    Per il caso di SIM io tenderei a sconsiglierti di usare l'UNIX (ma probabilmente è un mio limite...). In ogni modo (se nn mi sbaglio) questo valore di default può essere usato solo su campi di tipo timestamp (e non INT)... come nell'esempio di kevinoo
    Ultima modifica di miniscript : 20-03-2011 alle ore 19.16.21

  6. #6
    Guest

    Predefinito

    Io ho creato un campo INT(10) e funziona perfettamente
    Lì inserisco il time generato da PHP... quindi credo che il problema sia risolto a meno che non esista un tipo di campo più adatto di INT.
    Grazie mille.

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Io ho creato un campo INT(10) e funziona perfettamente
    Lì inserisco il time generato da PHP... quindi credo che il problema sia risolto a meno che non esista un tipo di campo più adatto di INT.
    Grazie mille.
    Tu inserisci il risultato di time() di php in un campo INT(11): è una cosa che personalmente a me non piace ma che fanno in molti e può avere i suoi vantaggi. Se vuoi fare così sfrutta la funzione FROM_UNIXTIME di MySql che può aiutarti nelle query.

    Tu chiedevi (se avevo capito) se esistestte una funzione di MySql che in fase si INSERT "lo facesse da solo": tecnicamente stavi chiedendo se potevi dare ad un campo di una tabella MySql un valore di default generato da una funzione.

    La risposta (per quanto ne sò) è NO. I campi data accettano come valore di default solo delle costanti.

    Vi è un'unica eccezione che concerne i campi di tipo TIMESTAMP a cui è possibile attribuire come default il risultato della funzione UNIX_TIMESTAMP (e possono ulteriormente essere date impostazioni per l'UPDATE).

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •