Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Query SQL su date

  1. #1

    Query SQL su date

    Salve,

    io devo estrarre dal database (mySql) i record relativi al giorno corrente: nel db ho una data iniziale (yyyy-mm-dd), una data finale (yyyy-mm-dd) e una frequenza (intero: ogni 1,7,15,30 giorni): come posso verificare se un dato record è pertinente o no al giorno corrente?
    Per la data iniziale e quella finale è facile, basta scrivere:

    $oggi=date('Y-m-d', time());
    $query="SELECT * FROM tabella WHERE datainizio/fine='$oggi'";

    Ma come posso fare per i record ricorrenti? Se ad esempio un record cade ogni settimana, la data iniziale è il 2 Settembre 2004 e oggi è il 9 Settembre 2004, come posso estrarlo?
    Lo stesso vale per i record con frequenza giornaliera, quindicinale, mensile ecc ...

    Grazie

  2. #2
    Mancano un po di informazioni....

    La frequenza e' un singolo intero in un campo del db?

    La frequenza (es. 7 ) va ripetuta ciclicamente fino alla scadenza?

    La scadenza quanto potrebbe essere distante? mesi, anni....

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

  3. #3
    Mi spiego meglio,

    in soldoni io ho un record che si deve ripetere ogni x giorni (singolo intero archiviato nel campo frequenza del db) tra la data di inizio e quella di fine.

  4. #4
    Originariamente inviato da gugheli
    Mi spiego meglio,

    in soldoni io ho un record che si deve ripetere ogni x giorni (singolo intero archiviato nel campo frequenza del db) tra la data di inizio e quella di fine.
    Ho dato un'occhiata alle varie possibilita'. Teniamo presente che la query deve essere standard e debba valere per qualsiasi cadenza.

    Se una ripetizione avviene una sola volta, non ci sarebbero problemi:

    SELECT *
    FROM tabella
    WHERE NOW() beetween data_inizio AND datafine
    AND data_inizio + interval frequenza day = NOW()

    Il problema e' come visualizzare la data alla scadenza successiva.

    Avrei pensato ad un update, ma la visualizzazione deve avvenire per tutta la giornata? enne volte possa essere richiesta od una volta sola?

    Oppure un campo aggiuntivo es.: data_intermedia da aggiornare alla data di visualizzazione. In questo caso:

    UPDATE tabella set data_intermedia = NOW()
    WHERE NOW() beetween data_inizio AND datafine
    AND (data_inizio + interval frequenza day = NOW()
    OR data_intermedia + interval frequenza day = NOW())

    e modificare la query SELECT aggiungendo il campo data_intermedia:

    SELECT *
    FROM tabella
    WHERE NOW() beetween data_inizio AND datafine
    AND (data_inizio + interval frequenza day = NOW()
    OR data_intermedia + interval frequenza day = NOW()
    OR data_intermedia = NOW())

    Tutto teorico.... non ho la tabella per provare... magari qualcosa da registrare meglio ci sara'.



    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.