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

    Sql, Problema Selezione Date

    Ciao a Tutti,
    ho scritto uno script completamente FUNZIONANTE per gli eventi ed installato su HAVANALOCA.IT .

    Nella home, dove c'è scritto "DOVE SI BALLA OGGI?", dovrebbero comparire le serate in cui si balla nel giorno in cui si visita la pagina.

    il SELECT è semplicemente con:
    data=NOW()

    Da qualche giorno a questa parte non funziona più e non funzionano anche le altre sezioni del sito che utilizzano quella funzione, o simile.
    Ad esmepio per gli eventi c'è un >=NOW() che ora (a differenza di prima) funziona solo come > (tralasciando l'uguale!!).

    Ho chiesto ad Aruba se avessero fatto modifiche al server SQL e mi hanno risposto di controllare il CHANGELOG DELLE ULTIME VERSIONI DEL MYSQL PERCHE' HANNO APPORTATO MODIFICHE SULLE SELEZIONI DI CAMPI DATE E DATETIME.

    ...potrei avere gentilmente una soluzione per risolvere il problema?

    Vi ringrazio anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    hai provato con

    select * from tabella where data_evento = curdate()

    ?

  3. #3
    ha ragione aruba a dirti di controllare il changelog perche' sono state fatte parecchie correzioni alla data-ora a partire gia' dalla rel. 4.1.3 di mysql

    Per esempio l'ultima che confronta un DATE con un DATETIME e quindi viene paragonato:

    yyyy-mm-dd con yyyy-mm-dd hh:mm:ss - prima veniva ignorata la porzione di codice eccedente il date (cioe' hh:mm:ss) ora invece viene assunto per DATE 00:00:00 e quindi diventa:

    yyyy-mm-dd 00:00:00 contro yyyy-mm-dd hh:mm:ss

    in pratica: prima la selezione era fatta con "SELECT date_field = CAST(NOW() as DATE);"

    sono state parecchi i cambiamenti e non tutte le ciambelle sono uscite con il buco al posto giusto..... il tutto per adeguare MySQL a MaxDB ed allo standard SQL.

    In soldoni.... se memorizzi una DATA, confronta con una DATA (es.: CURDATE() ) , se memorizzi con un DATETIME confronta con un DATETIME (es.: NOW() ) ti eviterai sorprese future. Da non escludere, finche' le varie ciambelle non avranno tutte il buco al posto giusto...


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

  4. #4
    Grazie. Utilizzerò CURDATE() al posto di NOW().

    Provo e vi tengo aggiornati.

    Grazie x la disponibilità.

  5. #5
    Perrrrrrfetto.

    Ho sostituito il NOW() con CURDATE() ed ha funzionato.

    Saluti, Stefano.

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.