Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105

    [mysql] query con funzione DATE

    Devo fare una query che mi seleziona tutti gli accessi di una azienda in base alla data selezionata

    Nella pagina precedente trovo una select di nome MESE
    E una di nome ANNO

    Nella 2 pagina la query :

    $data=$ANNO.-.$MESE.-01;

    $result_az=mysql("$DBName"," SELECT * FROM accessi WHERE codice_sub='$codice' AND data >' DATE($data)' AND data < 'LAST_DAY($data)'");

    o provato anche così ma il risultato è lo stesso:

    $result_az=mysql("$DBName"," SELECT * FROM accessi WHERE codice_sub='$codice' AND data > 'DATE($data)' AND data < 'DATE(LAST_DAY($data))' ");

    Il campo data è DATATIME ma non penso cambi molto.

    Messaggio di MySQL: Something is wrong in your syntax près de '(2003-09-01) AND data < DATE(LAST_DAY(2003-09-01)) LIMIT 0, 30' à la ligne 1

  2. #2
    DATE e' una funzione PHP non di MySQL....

    $data=$ANNO.-.$MESE.-01;

    SELECT * FROM accessi
    WHERE codice_sub = '$codice'
    AND '$data' BETWEEN data AND LAST_DAY

    Presumo che LAST_DAY sia un campo


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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105
    link a funzioni SQL DATE

    DATE è una funzione SQL come LAST_DAY

  4. #4
    Originariamente inviato da york75
    link a funzioni SQL DATE

    DATE è una funzione SQL come LAST_DAY
    Come vuoi... per me e' lo stesso.

    LAST_DAY() is available as of MySQL 4.1.1.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105
    Ok mi era sfuggito quel particolare!! non ho la versione!

    Come faccio a risolvere il problema?
    LAST_DAY è una favola perchè mi calcola da solo l'ultimo giorno del mese.
    Io in poche parole non posso sapere se il mese finisce il giorno 30, 31 o il 28, posso sapere solamente la data di partenza che per tutti i mesi è 01.
    La mia tabella ha 3 campi ID,codice,data - Ogni accesso ad un'area privata trammite loggin viene registrata.
    Lo scopo di tutto questo e effetuare un controllo e sapere in base la data scelta (MESE e ANNO dei select della pagina precedente), quante volte è stato utilizzato il codice per entrare nell'area privata in quel mese(dal primo all'ultimo giorno del mese).

  6. #6
    Allora ribadendo che DATE e' una funzione php e non esiste in MySQL,
    l'ultimo giorno di un mese si puo' trovare facilmente in php e poi passare il dato a mysql.
    codice:
    $fine_mese= date("Y-m-d", mktime (0,0,0,date("m")+1 ,00,date("Y")));
    echo $fine_mese;
    In pratica aggiungi un mese e metti il giorno = 0. ti dara' l'ultimo giorno del mese in corso.

    codice:
    SELECT * FROM accessi 
    WHERE codice_sub = '$codice' 
    AND '$data' BETWEEN data AND '$fine_mese'

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105
    Ok grazie! adesso provo!
    Non ti arabbiare la mia è solo una domanda da novello del php!

    Se io faccio una query nel modo seguente:
    codice:
    $result_cons=mysql("$DBName","SELECT * FROM visite WHERE codice_sub='$cod_az_sub' AND data > 'DATE(2004-08-01)' AND data < 'DATE(2004-08-30)'");
    La query funziona benissimo! Il DATE che io uso è linguaggio SQL ?

    Il problema è che con quella queri non identifico il giorno finale del mese, infatti se al posto di 'DATE(2004-08-30)' inserisco 'DATE(2004-02-31)' non dà risultato

  8. #8
    'DATE(2004-08-01)'

    e' nient'altro che una stringa ascii.

    A parte il fatto che mettere 'DATE(2004-02-31)' e' rimestare nel torbido....

    Essendo quella una stringa mettere > superiore o < inferiore equivale a comparare il primo carattere ascii e non la data.....

    quindi 2004 e' minore < di DATA ma non potra' mai essere maggiore...

    2 = ascii 50
    D = ascii 68
    d = ascii 100

    Il fatto di ottenere record, non vuol dire di aver trovato quello che cercavi.



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

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105
    Non ho capito molto!
    Dove trovo documentazioni che spieghino ste robe?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    105
    Scusa se rompo ma cosa intendi per rimestare nel torbido....

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.