Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: SQL somma di date

  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    SQL somma di date

    Salve e buona domenica,

    allora da un form ricevo un campo data. Controllo che sia effettivamente una data e lo trasformo in un formao che è YYYY-MM-GG

    Ora io ho la necessità di controllare se nella mia tabella , a partire da una determinata data,
    ci sono delle ricorrenze.

    as esempio se la data è

    01-02-2009 io voglio controllorae se c'è o

    01-03-09->01-04-09 oppure

    08-02-09->15-02-09

    la prima cosa a cui avevo pensato era dividera la data in g m e anno e aggiungere i relativi valori per poi ricreare le date con mktime.

    la cosa mi risolve il problema ma vorrei sapere se esiste un modo meno elaborato e piu efficiente

    grazie
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    between se si tratta di un range di date, cioe': data presente da ... a

    where data beetwen '2009-03-01' AND '2009-04-01'

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

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    non è un range ma la somma


    cioè

    prima data : 1-2-2009
    seconda data 8-2-2009
    15-2-2009

    in pratica debbo controlloare a partire una determinata data se ci sono ripetizioni nelle settimane o mesi seguenti

    $data + 7 giorni
    $data + 1 mese

    qualcosa del genere
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    devi fare un esempio perche' non e' per nulla chiaro.

    hai una data nel db. Questa data la vuoi confrontare con cosa?

    la data di oggi + nn giorni, + nn mesi??? Oppure la data del db + nn giorni se corrisponde es.: a 2009-02-15 ???

    Le date, per cortesia e per chiarezza, scrivile nel formato previsto yyyy-mm-dd altrimenti e' pura confusione.

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

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    allora io ricevo da un form una data

    2009-02-01

    il mio scopo è quello di controllare se nel database siano presenti dei "multipli " di questa data

    cioè

    2009-03-01
    2009-04-01
    2009-05-01

    (l'evento si ripete ogni mese)

    partendo dalla prima data cioè 2009-02-01 c'è qualche funzione che mi permetta di controllare anche le altre date senza che io debba calcolarle?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    trovo strano il concetto di "multiplo" per una data. Non credo esista un "multiplo" di data ma eventualmente esistono date ricorrenti.

    premesso questo viene cercato solo quanto esplicitamente espresso. Prova con LIKE:
    codice:
    where data_db LIKE '2009-__-01'

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

  7. #7
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    la soluzione va bene nel caso ci siano ripetizioni mensili. nel caso in cui ci siano ripetizioni ogni cinque giorni? esempio


    2009-02-01
    2009-02-06
    2009-02-11
    2009-02-16

    ?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da ciro78
    la soluzione va bene nel caso ci siano ripetizioni mensili. nel caso in cui ci siano ripetizioni ogni cinque giorni? esempio


    2009-02-01
    2009-02-06
    2009-02-11
    2009-02-16

    ?
    codice:
    select * from tabella
    where date_format(campo_data,"%Y-%m") = '2009-02'
    and day(campo_data) % 5 = 1

  9. #9
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ciao nicola e grazie,

    allora qualche domandina

    % 5 = 1 lo hai scritto perchè

    5 --> è il numero di giorni che passa tra una data e l'altra
    1 --> il giorno iniziale

    se è cosi la ricerca continuerà per tutti i record giusto?
    non c'è un modo di bloccarlo al 16?

    altra domanda ...

    c'è un sistema simile per insert?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ho scritto campo % 5 perchè il modulo restituirà 1 per 1,6,11,16 e così via. Se vuoi bloccarlo a 16 basta che aggiunga tale clausola.

    codice:
    select * from tabella
    where date_format(campo_data,"%Y-%m") = '2009-02'
    and day(campo_data) % 5 = 1 and day(campo_data) <= 16
    La domanda relativa alla insert non l'ho capita.

    edit. Se vuoi fermare la ricerca a 16 potresti anche scrivere la query così

    codice:
    select * from tabella
    where date_format(campo_data,"%Y-%m") = '2009-02'
    and day(campo_data) in (1,6,11,16)

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.