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

    Problema con query e date

    ciao a tutti.

    ho una query ke mi estrae dei valori e mi li stampa in questo modo:

    codice:
    $i=0;
    while ($riga = mysql_fetch_object( $risultato )) 
    {
    $i++;
    if( ($riga->CreationDate) < 14 GIORNI FA  )
    {
    echo "newON$i=1";
    }
    if( ($riga->CreationDate ) > 14 GIORNI FA  )
    {
    echo "newON$i=0";
    }
    }
    CreationDate è un campo di una tabella dove è scritta la data di creazione di quella riga.
    Devo fare in modo ke mi scriva a video la variabile newON = 1 o 0 se la data di creazione è inferiore o superiore a 14 giorni.
    Il codice ke ho scritto, in linea di principio dovrebbe essere giusto ma non so come dirgli i 14 GIORNI FA .

    Ho delle lacune pazzeske in php e ancora di più in mysql, ovvero nin so un tubo!
    plz help me!

    p.s. se può essere utile, il formato della data ke mi restituisce CreationDate è: YYYY-MM-GG HH:MM:SS
    Se eliminiamo l'impossibile, quello ke resta, per quanto improbabile, deve essere la verità.
    [Spok]

  2. #2
    Puoi estrarre il valore 1/0 direttamente dalla query....
    codice:
    Select *,
    if(CreationDate >= (Now - interval 14 day), 1, 0) as newON
    FROM tabella ecc...
    ...
    estrai newON come se fosse un campo della tabella.



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

  3. #3
    Se integro il codice ke m'hai dato, la query non funge più.
    Se eliminiamo l'impossibile, quello ke resta, per quanto improbabile, deve essere la verità.
    [Spok]

  4. #4
    Originariamente inviato da JeanLucPicard
    Se integro il codice ke m'hai dato, la query non funge più.
    posta la query

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

  5. #5
    RISOLTO!

    nel codice ke mi hai postato mancavano 2 parentesi!

    if(CreationDate >= (Now() - interval 14 day), 1, 0) as newON

    GRAZIE COMUNQUE, FUNZIONA!!!!
    Se eliminiamo l'impossibile, quello ke resta, per quanto improbabile, deve essere la verità.
    [Spok]

  6. #6
    Originariamente inviato da JeanLucPicard
    RISOLTO!

    nel codice ke mi hai postato mancavano 2 parentesi!

    if(CreationDate >= (Now() - interval 14 day), 1, 0) as newON

    GRAZIE COMUNQUE, FUNZIONA!!!!
    hai ragione.... NOW() e' una funzione...


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

  7. #7
    Originariamente inviato da already81
    con (NOW()+0) mi ha restituito 2147483647

    ma dove sta l'anno? il mese? il giorno?

    Mi sembra un numero iventato....
    Sembra un numero castrato.....

    NOW() + 0 (oppure NOW() * 1) rende la data/ora in formato numerico.

    In pratica e' un casting per cambiare la data dal formato date al formato numerico.

    da yyyy-mm-dd hh:mm:ss
    a yyyymmddhhmmss

    dipende dal tuo contesto. Se fai un semplice:

    SELECT NOW() as data1, NOW() + 0 as data2

    potrai vedere da te il risultato



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

  8. #8
    Il problema e' che un campo INT al massimo visualizza 10 digit, per fare quello che vorresti te ne servono 14.

    Per inserire una data di registrazione usa un campo DATETIME oppure TIMESTAMP, oppure DATE se non ti serve l'ora.

    Il TIMESTAMP ha alcune limitazioni (meglio dire specifiche) d'uso.

    Se ti serve numerico (da non confondere con un UNIX TIMESTAMP) lo potrai sempre ottenere con la visualizzazione.

    SELECT CAMPO * 1 as numerico

    oppure

    SELECT UNIX_TIMESTAMP(CAMPO) as unix_time


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

  9. #9
    Originariamente inviato da already81
    Tutti i miei "sforzi" sono finalizzato ad ottenere un valore numerico da modificare in relazione alle varie time zone impostate dagli utenti sottraendo ore e, dove servono, giorni. Posso fare ciò anche in un altro modo?
    Memorizzalo come DATETIME e poi nella query di estrazione potrai fare la gestione delle ore in piu' o in meno.

    SELECT *, CAMPO_DATA + INTERVAL 2 HOUR AS new_zone

    il + e il - e la quantita' di ore le puoi gestire con una variabile

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

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.