Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Confronto date per settimana in mysql (probl Domenica)

    Ciao, vi espongo il problema.

    Devo confrontare due date per vedere se condividono la stessa settimana.
    Il primo passo è stato questo
    codice:
    WHERE Week(DataScadenza)=Week( CURDATE( ))
    Però la domenicà antecedenta alla settimana risulta parte della settimana, mentre quella dopo no (Ovvero il primo giorno della settimana viene considerato Domenica).
    All'ora ho provato così
    codice:
    WHERE Week(DataScadenza)=Week(DATE_ADD( CURDATE( ) , INTERVAL 1 DAY ))
    Cioè ho aggiunto un giorno al confronto scartando la prima domenica quindi, ma così facendo mi rimane comunque fuori la domenica dopo.
    Come posso risolvere?

  2. #2
    ciao.

    Ti riporto uno stralcio della pillola date/time che potrai vedere tu stesso qui

    WEEK(date) - YEARWEEK(date) - Queste due funzioni rendono il numero della
    settimana da una data dell'anno. Il secondo parametro "first" serve ad indicare
    se la settimana inizia di domenica (0) oppure Lunedi'(1). Il comportamento differisce
    nel modo di presentare i dati. WEEK() ha un range 0-53 dove la settimana 0 sara'
    nei giorni che intercorrono dal giorno 1 Gennaio alla prima ricorrenza della
    domenica o lunedi' (dipende dalla scelta 0/1). YEARWEEK() invece rende anno
    e n. settimana in forma numerica. Il range delle settimane e' 1-52.
    Vediamo alcuni confronti: Il giorno 2000-01-01 era un sabato.

    select week("2000-01-01") => 0 -> settimana 0 (sabato)
    select week("2000-01-02") => 1 -> settimana 1 (domenica)
    select week("2000-01-02","1") => 0 -> settimana 0 (domenica)
    select week("2000-01-03","1") => 1 -> [i]settimana 1 (lunedi')

    select yearweek("2000-01-01") => 199952 -> Anno 1999 settimana 52 (sabato)
    select yearweek("2000-01-02") => 200001 -> Anno 2000 settimana 01 (domenica)
    select yearweek("2000-01-02","1") => 199952 -> Anno 1999 settimana 52 (domenica)
    select yearweek("2000-01-03","1") => 200001 -> Anno 2000 settimana 01 (lunedi')

    Si pone l'accento su queste funzioni perche' il numero della settimana e' molto
    usato nelle applicazioni aziendali (statistiche, pert, contabilita'...). Le agende in
    circolazione inoltre non rispondono ad un unico standard. Sicuramente la funzione
    YEARWEEK() non lascia adito a dubbi (no 0 - no 53).
    quindi WEEK ha un secondo parametro (first) che se settato a 0 (default) la settimana inizia da domenica, mentre se first=1 inizia da lunedi'.


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

  3. #3
    :mavieni:
    Troppo avanti MySQL!
    Grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.