Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [mysql] date inizio e fine

    ciao,

    ho visto che l'argomento è già stato trattato varie volte, ma non sono riuscito a trovare qualcosa che faccia al caso mio.

    devo inserire nel db il classico articolo che dovrà essere visibile tra le date di inizio e fine.
    i campi nelle 2 tabelle sono:
    - foreground_start (inizio)
    - foreground_stop (fine)
    e sono di tipo datetime

    ho iniziato con la funzione curtime()

    SELECT title FROM article WHERE curdate() = foreground_start;

    e mi restituisce il record che ha come inizio la data attuale.
    come faccio a completare la query in modo che mi faccia il calcolo fra inizio e fine?
    cioè se l'inizio è 2011/02/17 e la fine 2011/02/20, la query mi deve dire, ok l'articolo è ancora valido e quindi te lo stampo

    grazie

  2. #2
    codice:
    SELECT title FROM article WHERE curdate() BETWEEN foreground_start AND foreground_stop;

  3. #3
    ciao,

    allora la query

    codice:
    SELECT id, category_id, title, description 
             FROM article 
             WHERE category_id =22 AND CURDATE( )  
             BETWEEN foreground_start AND foreground_stop ORDER BY id DESC  LIMIT 0 , 1

    funziona, solo che non mi accetta una data più recente come inizio campo "foreground_start"

    esempio.

    Creo un articolo, inserisco come data inizio (foreground_start): 20/02/2011
    e come data fine (foreground_stop): 25/02/2011

    adesso creo un nuovo articolo, inserisco come data inizio 21/02/2011
    e come data fine 25/02/2011

    eseguo la query, ma mi restituisce sempre il record che ha come data inizio il 20/02/2011 mentre dovrebbe sostituirlo con quello più recente, cioè con data 21/02/2011

    la query non è corretta?

  4. #4
    togli il limit e fai l'order by sulla data di inzio:
    codice:
    ORDER BY foreground_start DESC;
    vedi cosa restituisce e poi se ti serve solo un record metti LIMIT 1

    ciao

  5. #5
    togli il limit e fai l'order by sulla data di inzio:
    codice:
    ORDER BY foreground_start DESC;
    vedi cosa restituisce e poi se ti serve solo un record metti LIMIT 1

    ciao

  6. #6
    togli il limit e fai l'order by sulla data di inzio:
    codice:
    ORDER BY foreground_start DESC;
    vedi cosa restituisce e poi se ti serve solo un record metti LIMIT 1

    ciao

  7. #7
    codice:
    SELECT id, category_id, title, description FROM article 
             WHERE category_id =22 AND CURDATE( )  
             BETWEEN foreground_start AND foreground_stop ORDER BY foreground_start DESC  
             LIMIT 0 , 1
    niente, mi restituisce sempre il record con data 20/02 anzichè 21/02

  8. #8
    ...domanda...ma sono della stessa categoria? Sembrauna domanda stupida ma alle volte...

  9. #9
    si hai ragione, ma è stata una delle prime cose che ho guardato

    inoltre ho inserito più articoli con la stessa data di inizio per vedere se almeno il LIMIT 0, 1 funziona. e quello va bene

    l'unico problema è quello spiegato prima, cioè se inserisco un articolo con data inizio (foreground_start) più recente di un altro, mi prende quello più vecchio.

    non so se manca qualche parametro nella query o che.....

  10. #10
    posta la tabella con i dati che ricreiamo il caso e vediamo cosa succede... ma il debug mi sembra molto semplice da fare.

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.