Visualizzazione risultati 1 fino 6 di 6

Discussione: contare risultati in specifico DATETIME

  1. #1
    personalthings non è connesso Utente giovane
    Data registrazione
    10-08-2013
    Messaggi
    73

    Predefinito contare risultati in specifico DATETIME

    Ciao ragazzi,
    ho questo estratto di codice:

    Codice PHP:

    $actual_exp
    = cd_query("SELECT ultima_esperienza FROM iscritti WHERE nome = '".$_SESSION['login']."'");
    $now = time();
    $this_morning = strtotime('today 6:00');
    $last_action = strtotime($actual_exp['ultima_esperienza']);

    //ora setto la condizione

    $query = mysql_num_rows(cd_query("SELECT * FROM chat WHERE stanza = ".$_SESSION['luogo']." AND mittente = " . $_SESSION['login'] . " AND DATE_ADD(ora, INTERVAL 12 HOUR) >= NOW() AND tipo = 'P'"));
    if (
    $query == 5 && ($now - $last_action >= (24 * 60 * 60) || ($last_action < $this_morning && $now >= $this_morning))) {

    CONDIZIONE
    }
    }
    Adesso, se io togliessi tutta la prima parte, la condizione si verifica corettamente.
    Il problema nasce quando setto la condizione che, semplificata, dovrebbe agire così: " se tra le 6:00 e le 5:59 ci sono almeno 5 risultati di questa persona > condizione"

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Le funzioni MySQL sono morte. Passa a MySQLi o PDO il prima possibile.

    Il problema qual'è esattamente? Rappresentare la condizione "se tra le 6:00 [di ieri] e le 5:59 [di oggi] ci sono almeno 5 risultati di questa persona" in SQL?

    I suggerimenti che do più spesso:


  3. #3
    personalthings non è connesso Utente giovane
    Data registrazione
    10-08-2013
    Messaggi
    73

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Le funzioni MySQL sono morte. Passa a MySQLi o PDO il prima possibile.

    Il problema qual'è esattamente? Rappresentare la condizione "se tra le 6:00 [di ieri] e le 5:59 [di oggi] ci sono almeno 5 risultati di questa persona" in SQL?
    Esattamente :)

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La colonna ora contiene solo un orario o un timestamp? Se contiene solo l'orario non va bene, perché non c'è modo di discernere tra le "8:00 di ieri" e le "8:00 di un mese fa".
    Se contiene l'intero timestamp puoi provare così:
    Codice:
    SELECT * FROM chat
    WHERE stanza = ... AND mittente = ... AND tipo = 'P'
    AND ora BETWEEN CURDATE() - INTERVAL 1 DAY + INTERVAL 6 HOUR AND CURDATE() + INTERVAL 6 HOUR;

    I suggerimenti che do più spesso:


  5. #5
    personalthings non è connesso Utente giovane
    Data registrazione
    10-08-2013
    Messaggi
    73

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    La colonna ora contiene solo un orario o un timestamp? Se contiene solo l'orario non va bene, perché non c'è modo di discernere tra le "8:00 di ieri" e le "8:00 di un mese fa".
    Se contiene l'intero timestamp puoi provare così:
    Codice:
    SELECT * FROM chat
    WHERE stanza = ... AND mittente = ... AND tipo = 'P'
    AND ora BETWEEN CURDATE() - INTERVAL 1 DAY + INTERVAL 6 HOUR AND CURDATE() + INTERVAL 6 HOUR;
    È settato su datetime

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    DATETIME va bene, è [quasi] equivalente a TIMESTAMP.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •