Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    MySQL e Data di default

    Salve,
    utilizzando un comune database Access, posso scrivere "Now()" in un campo Data, ed automaticamente viene inserita la data e l'ora quando aggiungo un nuovo record al database...

    Su MySQL c'è modo di fare la medesima identica cosa? In altre parole, mi piacerebbe che la data e l'ora venissero inserite automaticamente quando aggiungo un nuovo record (insomma, non voglio creare nessun campo nascosto per inserire la data)

    "TIMESTAMP" è un inizio (perchè inserisce automaticamente la data), ma lo fa in maniera poco leggibile - e desidererei NON usare alcuna funzione aggiuntiva per "convertire" da timestamp a formato-leggibile

    Ho provato ad inserire, come valore predefinito, NOW(), CURDATE() e CURTIME() ma non succede nulla...
    Ora, se questa stupidaggine la fa un database Access, sono sicuro che la deve fare anche un database MySQL... o no?

    Grazie in anticipo per le risposte...
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  2. #2
    Si, la fa. Prova a cercare now(), dovrebbero esserci già delle discussioni a riguardo (Una l'ho aperta proprio io!). Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Credo di avere trovato il thread aperto da te, e la soluzione che ti era stata consigliata era questa:
    codice:
    $query = "INSERT INTO `tabella` (`altri_campi` , `data`) VALUES ('altri_valori' , 'NOW()')";
    Ma io non voglio una cosa del genere! non voglio definire la data di inserimento nell'istruzione INSERT INTO, mi piacerebbe che venisse inserita in automatico (ossia senza definirla nella query, ma come valore predefinito di un campo DATETIME del database): insomma, se hai presente Access o SQL Server, il modello è quello - (basta mettere Date() o Now() come valore predefinito del capo Date, e ad ogni nuovo record aggiunto viene associata una data, senza scomodare le query di inserimento)

    Possibile che il tanto osannato MySQL non riesca a fare una cosa così semplice?
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  4. #4

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

  5. #5
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Piero, a dire il vero non mi risulta (parlo della 4.0x, non so per la 4.1).

    Provando a inserire NOW() nel valore di default, semplicemente non funziona, e il manuale lo specifica (ora non riesco a trovarlo cavolo).

    Se la memoria non mi tradisce, l'unico modo e' mettere CURRENT_TIMESTAMP come valore di default di UN campo timestamp. Se non lo si specifica, il valore e' di default sul primo dato TIMESTAMP della tabella (questa e' una di quelle cose di MySQL che non si capisce perche' le abbiano fatte cosi', mah!)

    L'ho appena cercato per conto mio per il mio progetto e sono sicuro di quanto scrivo, ma onde evitare figuracce ora mi leggo la pillola che non si sa mai.

  6. #6
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Puoi usare un TIMESTAMP e poi usare questo:

    codice:
    select concat("Il giorno ", substring(campoTimestamp, 7, 2), "/", substring(campoTimestamp, 5, 2), "/", substring(campoTimestamp, 1, 4), " alle ", substring(campoTimestamp, 9, 2), ":", substring(campoTimestamp, 11, 2), ":", substring(campoTimestamp, 13, 2) ) from tabellaCheVuoiTu
    Non e' il massimo ma temo sia l'unico modo se vuoi il NOW() obbligatorio. Lo so, non chiedermi perche' MySQL non supporti delle funzioni dentro il valore di default ma si.. e' assurdo.

  7. #7
    Il campo in formato TIMESTAMP e' un campo che utilizza un formato DATETIME numerico, quindi dove DATETIME definisce yyyy-mm-dd hh:mm:ss
    il TIMESTAMP(14) sara' yyyymmddhhmmss.

    Questo campo e' autoinserente con l'insert ed e' aggiornato a ogni UPDATE. Possono essercene piu' di uno, ma solo il primo verra' aggiornato. E' sufficiente ignorarne la presenza nella query.

    Per inciso, nella versione mysql 4.1 questo campo cambia di formato e diventera' identico al DATETIME. sara' possibile inoltre definire "quale" dei campi TIMESTAMP potra' essere automaticamente popolato. Ora e' solo il primo nella lista dei campi.

    Il tutto da non confondere con UNIX TIMESTAMP che e' un'altro paio di mutande....



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

  8. #8
    @piero: ho letto la pillola, e la parte che più si avvicina a quello che intendevo io è questa:
    codice:
    Il tipo di formato TIMESTAMP puo' essere aggiornato in modo esplicito con date/time rispettando il numero dei digit sopra indicati. Inserendo per es.: 20030512 verra' aggiornata solo la data, posizionando a 00:00:00 il tempo. Oppure puo' essere usata la funzione NOW() e suoi alias. Se il campo e' settato NULL e viene omesso nella query, verra' automaticamente aggiornato alla data/ora corrente in concomitanza di qualsiasi UPDATE che modifichi la tupla.
    Il problema è, come accennavo prima, che questa cosa vale solo per TIMESTAMP, mentre non c'è verso di applicarla ad un campo DATETIME: e mi sembra una limitazione non da poco... Inoltre, mi piacerebbe che NON venisse aggionato nel caso di un Update... insomma, la data viene definita una volta per tutte al momento dell'Insert, a meno che poi nella query di Update venga specificato un "cambio di data"

    Però leggo adesso l'ultimo post di Piero, che dice che nella versione 4.1 questa limitazione dovrebbe essere superata... bene, mi sa che prima o poi la proverò :-)

    Grazie a tutti per le risposte!
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  9. #9
    Scusami se insisto ma a te cosa costa inserirlo nella query?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    uhm... codice in più da digitare :-)
    no, davvero, su Access e SQL Server questa cosa è una grossa comodità, spero nella nuova versione di MySQL
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

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.