Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [MySQL]Ordinare data

  1. #1

    [MySQL]Ordinare data

    Salve,
    dovrei ordinare dei dati in base alla loro data d'uscita escludendo quelli già usciti.

    Il campo "data_rilascio" è di tipo TIMESTAMP. La query che ho scritto, ordina per data ma non come vorrei
    codice:
    SELECT * FROM tabella ORDER BY data_rilascio DESC
    Come potrei dire, tramite codice, ordina per data di rilascio a partire da oggi (incluso)? E se volessi racchiuderli tra due date temporali? Diciamo gli ultimi dati inseriti da una settimana a questa parte?

    Scusate la mia ignoranza, grazia per il supporto.
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Record odierni o futuri:

    SELECT * FROM tabella where date(data_rilascio) >= curdate() ORDER BY data_rilascio DESC

    Record non più vecchi di una settimana:

    SELECT * FROM tabella where date(data_rilascio) >= curdate() - interval 7 day ORDER BY data_rilascio DESC

  3. #3
    La query funziona alla perfezione ma avrei bisogno di un'ulteriore aiuto.
    Se volessi mostrare i records la cui data di rilascio sia questo week-end?
    Dovrei mostrare tutti i dati che hanno come data di rilascio il week-end che sta per venire o in caso fossimo a lunedì, il week end che verrà e da quello mostrare tutti i records di 7 giorni prima.

    La cosa è fattibile con una singola query?
    Grazie
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ti lascio uno spunto.

    codice:
    select date_add(curdate(), interval 7-dayofweek(curdate()) day);
    Con questa query trovi la data del prossimo sabato. Nel caso sabato sia oggi otterrai la data corrente, se sposti la data di sistema a domani otterrai 12 giugno.
    A partire da questa data togli i giorni che vuoi.

  5. #5
    Grazie 1000, questo è il codice che mi serviva

    codice:
    SELECT * FROM tabella WHERE DATE(data_rilascio)<=DATE_ADD(CURDATE(), INTERVAL 7-DAYOFWEEK(CURDATE()) DAY) AND DATE(data_rilascio)>=(CURDATE()-INTERVAL 7 DAY) ORDER BY data_rilascio DESC LIMIT 3
    Solo per curiosità, anche perchè così mi aiuterebbe a capire la sintassi da te scritta.. se volessi che il giorno della settimana da cui contare 7 giorni non sia sabato ma domenica come dovrei fare?

    Grazie
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La data della prossima domenica la ottieni in questo modo:

    codice:
    select date_add(curdate(), interval (8 - if(dayofweek(curdate())=1, 8, dayofweek(curdate()))) day) as domenica
    La funzione dayofweek restituisce un numero che va da 1 per la domenica fino a 7 per il sabato.

    Ciò significa che se oggi è lunedì, la funzione dayofweek restituirà un valore pari a 2, quindi alla data odierna verranno aggiunti 8-2 giorni, se fosse mercoledì verrebbero aggiunti 8-4 giorni ecc. Se oggi è domenica faccio 8-8 e non aggiungo niente.

  7. #7
    Grazie per la spiegazione, qualcosa mi dice che ci sentiremo presto
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

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.