[RISOLTO]Query per estrarre date solo del mese corrente

di il
6 risposte

[RISOLTO]Query per estrarre date solo del mese corrente

Buongiorno a tutti gli utenti del forum,
ho una tabella in un database con una colonna di tipo date e nome colonna 'dtscrev', in sostanza la colonna contiene la data di scadenza delle revisioni ministeriali dei veicoli inseriti.

Avrei la necessità di scrivere una query che estragga da tale tabella tutti i record che hanno la data scadenza revisione nel mese corrente, ad esempio immaginando di avere una situazione del genere:



Esempio:
Se l'interrogazione viene effettuata nel mese di luglio, la query dovrà mostrarmi 3 record
Se l'interrogazione viene effettuata nel mese di agosto, la query dovrà mostrarmi 2 record
Se l'interrogazione viene effettuata nel mese di settembre, la query dovrà mostrarmi 3 record

Grazie anticipatamente per il supporto

6 Risposte

  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    Siamo a livello di query di base - si può e si deve fare uno sforzo per leggere e imparare le basi tramite tutorial e documentazioni ufficiali...
    select * from MyDB where YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev) = MONTH(NOW());
  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    Weierstrass ha scritto:


    Siamo a livello di query di base - si può e si deve fare uno sforzo per leggere e imparare le basi tramite tutorial e documentazioni ufficiali...
    select * from MyDB where YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev) = MONTH(NOW());
    Buongiorno Weierstrass,
    inutile dire che grazie alla tua risposta sono riuscito a recuperare i dati che mi occorrevano, non sono uno sviluppatore ma sono un appassionato che si è avvicinato a questo mondo (per necessità) sto valutando l'iscrizione ad un corso di programmazione full stack, potrei scriverti un post lunghissimo su di me, la mia storia ed il mio percorso formativo, ma nulla servirebbe per giustificare che le lacune sono tante e sicuramente mi segnano e non mi lasciano indifferente quando un utente (a tutta ragione) me lo fa presente.

    Cmq grazie a te il primo scoglio è "quasi superato", adesso ho la pagina che mi serviva per mostrare il numero di veicoli che hanno la scadenza nel mese (il problema è che mi prende anche le date del mese già passate), per darti un'idea di quello che vorrei tirar fuori ti posto il codice, ho provato a scrivere anche la query, che sembra funzionare, la quale mi restituisce i veicoli che hanno la data di revisione scaduta escludendo dal conteggio i campi del database che hanno come valore 0000-00-00
    SELECT * FROM commesse WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00
    
    <?php
    $sqlrev = "SELECT * FROM commesse WHERE YEAR(dtscrev) = YEAR(NOW()) AND MONTH(dtscrev)= MONTH(NOW())ORDER BY id_com ASC"; //RICAVO I RECORD DEL MESE CORRENTE CON DATA REVISIONE NON ANCORA SCADUTA
    $rsrev = $mysqli->query($sqlrev);
    $cntrev = mysqli_num_rows($rsrev);
    
    $sqlrevsc = "SELECT * FROM commesse WHERE dtscrev < NOW()-1 AND dtscrev <> '0000-00-00'"; // RICAVO I RECORD CON DATA REVISIONE SCADUTA ED ESCLUDO IL CONTEGGIO DEI NON VALORIZZATI
    $rsrevsc = $mysqli->query($sqlrevsc);
    $cntrevsc = mysqli_num_rows($rsrevsc);
    ?>
    
    <!--APRO UNA ROW COMPOSTA PER LA GESTIONE SCADENZE REVISIONI-->
    <div class="container-home">
    	<div class="row">
    		<div class="col-sm-4">
    			<div class="card">
    				 <div class="card-block">
    					<div class="alert alert-success-home" role="alert"><h2><b>Monitoraggio revisione ministeriali Scadute e in scadenza</b></h2></div>
    		<ul class="list-group">
    			<li class="list-group-item justify-content-between">Veicoli con scadenza revisione questo mese (non ancora scaduta) : <a 				href="index.php?page=scadenza_revisione&month=$mese"><span class="badge-home badge-default badge-pill"><?= $cntrev ?></span></a></li>
    		</ul>
    		
    		<ul class="list-group">
    			<li class="list-group-item justify-content-between">Veicoli con data revisione scaduta : <a href="index.php?page=scadenza_revisione&month=$mese"><span class="badge-home badge-default badge-pill"><?= $cntrevsc ?></span></a></li>
    		</ul>
    				  </div>
    				</div>
    			</div>
    	</div><!--Chiudo la riga scadenza revisioni-->
    

    Questo invece quello che vedo lato front end, naturalmente il primo valore risulta errato perchè prende in considerazione anche le revisioni del mese di luglio esempio scadenza 27/07/2020 le quali dovrei tenerle tra le revisioni scadute

  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    Non ti ho messo il check sul giorno perché solitamente si controlla il mese in corso, altrimenti la query la fai il 31 luglio, poi la rifai il 2 agosto e ti perdi per strada le scadenze del primo agosto.
    Comunque se vuoi anche il check del giorno:
    select * from MyDB where YEAR(dtscrev) = YEAR(NOW()) and MONTH(dtscrev) = MONTH(NOW()) and DAY(dtscrev) >= DAY(NOW());
    Come tutorial da leggere intendevo questo
    https://www.mysqltutorial.org

    Non c'è bisogno di un corso intero...
  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    Hai perfettamente ragione, so che non c'è bisogno di un'intero corso, però vorrei farlo e mi sto organizzando con una scuola online per uno studio full stack (penso, ora non so se a torto o a ragione), che se voglio imparare devo poterlo fare su un progetto reale andando a toccare buona parte delle tecnologie e dei linguaggi che permettono di poter lavorare ed interagire con il web.

    Detto questo, non riesco a comprendere come mai mi scrivi questo:

    Weierstrass ha scritto:


    Non ti ho messo il check sul giorno perché solitamente si controlla il mese in corso, altrimenti la query la fai il 31 luglio, poi la rifai il 2 agosto e ti perdi per strada le scadenze del primo agosto.
    per meglio dire quale tipo di interrogazione potrei fare per non perdermi le date per strada ?

    P.S
    Grazie per il supporto e la pazienza
  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    L'1 agosto è sabato. Quando li avvisi quelli in scadenza l'1 e il 2 agosto se nessuno (macchina o persona fisica) fa le query nei weekend? Per loro passerai direttamente al secondo avviso per le revisioni scadute. Se però questo è quanto ti viene richiesto, allora va bene così...
  • Re: [RISOLTO]Query per estrarre date solo del mese corrente

    Weierstrass ha scritto:


    L'1 agosto è sabato. Quando li avvisi quelli in scadenza l'1 e il 2 agosto se nessuno (macchina o persona fisica) fa le query nei weekend? Per loro passerai direttamente al secondo avviso per le revisioni scadute. Se però questo è quanto ti viene richiesto, allora va bene così...
    Guarda per il momento va più che bene, a me sinceramente già non basta ringraziare per la pazienza che hai avuto con me.
    Non ti conosco, ma ti mando un abbraccio virtuale
Devi accedere o registrarti per scrivere nel forum
6 risposte