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

    Comando SQL di MYSQL per confronto date

    Ciao,

    ho un grandissimo problema.
    Sto realizzando un'applicazione Server Side con il linguaggio JSP e vorrei fare una query dove seleziono solo quelle tuple che presentano la data che confronto:

    SELECT * FROM studenti WHERE data = ...

    come posso fare per confrontare le due date? Soprattutto da JSP?

    Creo un oggetto della classe Date e la confronto?

    Non so come uscirne.

    Grazie mille a tutti!

  2. #2
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Se non è stata alterata l'impostazione predefinita per il formato data base

    where data = '2013-12-25' per natale 2013

  3. #3
    In realtà in questo modo, internamente, avviene una conversione tra tipi: '2013-12-25' è una stringa, quindi per poter effettuare il confronto MySQL converte il campo data in una stringa. Dovresti utilizzare la sintassi per il formato data:

    DATE '2013-12-25'

    oppure:

    { d '2013-12-25' }

    Ovviamente il risultato è lo stesso e il miglioramento delle prestazioni non può essere apprezzabile, ma in MySQL la conversione fra tipi è causa di molti bug.
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  4. #4
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da in the web
    In realtà in questo modo, internamente, avviene una conversione tra tipi: '2013-12-25' è una stringa, quindi per poter effettuare il confronto MySQL converte il campo data in una stringa.
    E' una conversione statica effettuata nei primi stage del pianificatore.
    Non mi risultano esserci differenze nell'esecuzione, e di pochi microsecondi nella fase di pianificazione, anzi non sono del tutto sicuro di quest'ultima affermazione, dovrei controllare il sorgente.

  5. #5
    Per quanto riguarda MySQL sono sicuro che, nell'inserire un dato nel DB, esso converta una stringa in Data (esempio in JSP). Ma come posso fare per eseguire l'operazione inversa?

    Esempio: catturo i dati da una form in JSP sotto forma di stringa. Effettuo, ovviamente, controlli su di essa per far sì che essa sia una data corretta. Ma dopo di che, avendo quel valore assegnato ad una variabile non posso fare

    String date="2012-11-10";

    "SELECT * FROM studenti WHERE data = "+date

    perché essa non funziona.

    Ho saltato qualche passaggio? Devo utilizzare oggetti della classe Date o continuare tranquillamente con le Stringhe (ricordo che in MySQL il campo data è impostato, ovviamente, come tipo DATE).

  6. #6
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Funziona, funziona.
    Servono gli apici ' prima e dopo (in realtà sotto certi aspetti funzionano anche le ", ma la faccio breve metti gli apici)

    select * from studenti where (nome='alberto') and (datanascita='1980-25-12') funziona tranquillamente (sempre con le impostazioni di default)

  7. #7
    Originariamente inviato da franzauker2.0
    E' una conversione statica effettuata nei primi stage del pianificatore.
    Non mi risultano esserci differenze nell'esecuzione, e di pochi microsecondi nella fase di pianificazione, anzi non sono del tutto sicuro di quest'ultima affermazione, dovrei controllare il sorgente.
    Esatto, come dicevo è una questione di bug. Se fai un giro su bugs.mysql.com, anche se ormai è solo un surrogato pubblico del vero db usato da Oracle, buona parte dei bug a livello di SQL riguardano le conversioni.

    E' come fare WHERE id = '5'
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  8. #8
    Originariamente inviato da EmaEma94.
    String date="2012-11-10";

    "SELECT * FROM studenti WHERE data = "+date

    perché essa non funziona.
    Questo è davvero il codice che usi? Se proprio non vuoi usare la sintassi che ti ho consigliato, mettici almeno le virgolette
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  9. #9
    Originariamente inviato da in the web
    Questo è davvero il codice che usi? Se proprio non vuoi usare la sintassi che ti ho consigliato, mettici almeno le virgolette
    Scusami ma purtroppo il mio livello di SQL è ancora di tipo scolastico e per ora sto andando proprio a livello base-base!

    Comunque si, non ci posso credere di aver trascurato le virgolette... Dopo 6 ore di programmazione stamattina già tanto che non ho perso la testa! Mi spiace di avervi disturbato per una stupidata del genere! Ora funziona! Vi ringrazio a tutti immensamente!!

    CIAO!! =D

  10. #10
    Figurati, se ti abbiamo risparmiato altre 6 ore di sclero va bene così
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

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.