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

    MySQL e valore di default delle date...

    Salve,
    Continua il mio viaggio alla scoperta di PHP e MySQL...
    Oggi ho un problema che, credo, sia il più ostico per chi come me passa da SQL Server ed (ehm) Access a MySQL

    Mi riferisco all'annoso problema delle date e del loro inserimento su MySQL, soprattutto per quanto riguarda valori di default

    Ho letto articoli, pillole, fatto ricerche, ecc., ma pare che siano due mondi che funzionano in maniera completamente differente

    Mi spiego: quando aggiungo un record ad una tabella,vorrei non dovermi preoccupare di inserire la data in un particolare campo DATETIME, ma lasciare che sia MySQL a farlo; insomma, ottenere le funzionalità di un TIMESTAMP con default CURRENT_TIMESTAMP, ma su un campo DATETIME

    Su SQL Server basta mettere getdate() come valore di default e sono a posto
    Su Access basta mettere Now() o Date() e sono altrettanto a posto
    Su MySQL... so' cavoli!

    Ho provato a impostare NOW() come valore di default su PhpMyAdmin per il campo DATETIME, ma ottengo un "Invalid default value for 'USE_DATED'"; la query che non va a buon fine è questa:
    codice:
    ALTER TABLE `users` CHANGE `USE_DATED` `USE_DATED` DATETIME NOT NULL DEFAULT 'NOW()'
    Ho provato a mettere TIMESTAMP, e già mi potrebbe andare bene, se non fosse che ogni query di UPDATE effettuata sul record mi cambia il valore originario del TIMESTAMP...

    Infine, posso provare a mettere un campo nascosto nel form di inserimento, ma non è la stessa cosa: tra il momento in cui l'utente apre la pagina di inserimento, compila i suoi bei campi e salva il tutto sul database può passare un lungo lasso di tempo, che non fa fede del preciso momento di inserimento del record...

    Bene, che faccio? Suicidio?
    Possibile che non ci sia una così semplice funzioncina sul grande MySQL?
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Benvenuto nel fantastico mondo dei comportamenti casuali di MySQL 4!

    Allora:

    - Fino alla versione 5 non puoi mettere una funzione come valore di default a un campo, incluso NOW(). Nella 5 FORSE puoi.
    - I campi timestamp sono maggggici in MySQL, infatti vengono aggiornati in automatico al timestamp corrente. Tutti? No. Maggicamente solo il primo della tabella (presumo partendo da sinistra). Ti piace il maggico comportamento ma non e' finita.
    - I campi se gli sbatti null, finiscono a 0000-00-00, fino alla versione 4, forse nella 5 hanno deciso di comprarsi un cervello e un manuale di SQL standard.

    Puoi tranquillamente iniziare a sverniciare le chiese del tuo quartiere a bestemmie
    There are 10 types of people in the world - those who understand binary and those who don't.

  3. #3
    Originariamente inviato da frinkia
    Benvenuto nel fantastico mondo dei comportamenti casuali di MySQL 4!

    Allora:

    - Fino alla versione 5 non puoi mettere una funzione come valore di default a un campo, incluso NOW(). Nella 5 FORSE puoi.
    - I campi timestamp sono maggggici in MySQL, infatti vengono aggiornati in automatico al timestamp corrente. Tutti? No. Maggicamente solo il primo della tabella (presumo partendo da sinistra). Ti piace il maggico comportamento ma non e' finita.
    - I campi se gli sbatti null, finiscono a 0000-00-00, fino alla versione 4, forse nella 5 hanno deciso di comprarsi un cervello e un manuale di SQL standard.

    Puoi tranquillamente iniziare a sverniciare le chiese del tuo quartiere a bestemmie
    Uhm... utilizzo la versione 5.0.18 ma il NOW() non lo accetta comunque (almeno tramite PhpMyAdmin)

    Ho scoperto però che con MySQL 5 - non vorrei dire una cavolata - il campo TIMESTAMP, a differenza delle versioni precedenti con cui ci avevo sbattuto per poi abbandonare per esaurimento di forze , dicevo, il campo TIMESTAMP NON viene più aggiornato automaticamente quando si fa un UPDATE (eccivolevalaversione5perarrivarci?!): in pratica viene aggiornato solo se metto un ON UPDATE CURRENT_TIMESTAMP, altrimenti lo lascia stare buonino al valore salvato durante l'INSERT (saggia cosa): ho detto bene?
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  4. #4
    Originariamente inviato da ivanhalen
    ... in pratica viene aggiornato solo se metto un ON UPDATE CURRENT_TIMESTAMP, altrimenti lo lascia stare buonino al valore salvato durante l'INSERT (saggia cosa): ho detto bene?

    sembrerebbe proprio di sì

    dal manuale:
    With a constant DEFAULT value, the column has the given default. If the column has an ON UPDATE CURRENT_TIMESTAMP clause, it is automatically updated, otherwise not.
    http://dev.mysql.com/doc/refman/5.0/...stamp-4-1.html








    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.