Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139

    [ MySQL ] scrivere una query che tenga conto del giorno solare

    Ciao a tutti, avrei una richiesta un pò particolare:
    ho una tabella che contiene un campo in cui viene memorizzata la data ottenuta con la funzione "time()". Quindi ogni volta che faccio un INSERT INTO... in automatico viene memorizzata solo una sequenza di 11 interi.

    Avrei bisogno di una query che mi prelevi, di volta in volta, solamente i record inseriti il giorno prima.
    Ad esempio: se eseguita oggi a qualsiasi orario, questa query dovrebbe estrapolare tutti i record inseriti dalle 00:01 alle 23:59 dell'8 febbraio.

    Non so proprio come fare..
    Grazie a chiunque voglia darmi una mano.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    una cosa tipo

    SELECT .....
    FROM tabella
    WHERE DATE(FROM_UNIXTIME(colonna)) = '2006-02-08'

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    SELECT *
    FROM TABELLA
    WHERE DATE( FROM_UNIXTIME(DATA) ) = DATE_SUB( CURDATE( ) , INTERVAL 1 DAY )

  4. #4
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da Teuzzo
    SELECT *
    FROM TABELLA
    WHERE DATE( FROM_UNIXTIME(DATA) ) = DATE_SUB( CURDATE( ) , INTERVAL 1 DAY )
    Scusa ma forse sbaglio qualcosa nella sintassi perchè mi da errore nella query:

    Il mio campo contenente la data in formato unixtime si chiama "pubdate" e ho scritto così:

    codice:
    $query = "SELECT * FROM tabella ORDER BY pubdate DESC WHERE DATA( FROM_UNIXTIME(pubdate) ) = DATE_SUB( CURDATE( ) , INTERVAL 1 DAY )";
    Dove sbaglio? :master:

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per cominciare potresti mettere l'ORDER BY dopo la WHERE.
    Dopodiché non ricordo se sia consentito mettere in order by un campo che non è nella select

  6. #6
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Ho provato anche a togliere l'ORDER BY, ma continua a darmi errore...

    Posto il codice completo (ridotto all'osso)
    Codice PHP:
    $query "SELECT * FROM tab WHERE DATE(FROM_UNIXTIME(pubdate)) =
    DATE_SUB(CURDATE(), INTERVAL 1 DAY)"
    ;
    $result mysql_query$query$connessione);
    while (
    $row mysql_fetch_array($result))
          {
        print 
    "

    $row[titolo]</p><hr />";
          } 

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da gordian
    Posto il codice completo (ridotto all'osso)
    Cos'è, un ossimoro?

    Perché non fai il controllo degli errori sulla query?

    $result = mysql_query( $query, $connessione) or die(mysql_error()) ;

    E poi magari postalo anche, l'errore

  8. #8
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da luca200
    Cos'è, un ossimoro?

    Perché non fai il controllo degli errori sulla query?

    $result = mysql_query( $query, $connessione) or die(mysql_error()) ;

    E poi magari postalo anche, l'errore
    Ok. L'errore che mi restituisce è:

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(FROM_UNIXTIME(pubdate)) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT *
    FROM tab
    WHERE FROM_UNIXTIME(pubdate,'%Y-%m-%d') = DATE_SUB( CURDATE( ) , INTERVAL 1 DAY )


    la prossima volta specifica che usi un MySQL vecchio

  10. #10
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da luca200



    la prossima volta specifica che usi un MySQL vecchio
    ... veramente lo scopro ora che è vecchio
    Sapevo di avere PHP 4 e non 5, ma non ero a conoscenza di nuove versioni di MySQL (anche se potevo immaginarlo )
    Ti ringrazio molto comunque. Ora funziona.

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.