Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [mysql] aiuto per query ricerca in base giorno settimana

    ciao a tutti.
    sto cercando un sistema per realizzare una query che mi dica gli appuntamenti del giorno in base al giorno della settimana (lun, mart,merc etcc)
    la cosa è semplice usando DAYNAME() o DAYOFWEEK() e facendo una comparazione ma solo fino a che l'appuntamento dura 1 giorno. se per qualche ragione dura 2 o piu giorni non so piu dove sbattere la testa

    a qualcuno è mai capitato di farlo o a qualche idea da suggerirmi?
    Codice PHP:
    if (empty($g)){$g=date("d");}
    if (empty(
    $m)){$m=date("n");}
    if (empty(
    $a)){$a=date("o");}
    $query="SELECT * FROM impegni 
    WHERE dayofweek('
    $a-$m-$g')>=giorno_settimana 
    AND dayofweek('
    $a-$m-$g')<=giorno_settimana"
    questa va solo nel caso in cui l'appuntamento inizi e finisca tra la domenica e il sabato. se per caso inizia il sabato e finisce la domenica non funziona piu dato che dayofweek attribuisce 1 alla domenica e 7 al sabato..

    help pls

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Puoi fare un esempio pratico di come memorizzi gli impegni nella tabella?
    Non mi è chiaro come li salvi quando si estendono su più giorni.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    al momento non ho aplicato un ora per semplificarmi le cose...
    al momento ho una data di inizio '2008-11-03' e una data fine '2008-11-05' e ho il giorno della settimana iniziale 'saturday' friday etcc...

    al momento sono arrivato ad una cosa del genere anche se la vedo complessa e lenta
    Codice PHP:

    SELECT 
    *,
               
    CONCAT('2008',WEEKOFYEAR('2008-11-03'),giorno_settimana),
               
    WEEKOFYEAR('2008-11-11'),
              
    DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-03 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY
    FROM eventi WHERE id='6' 
    le date in realtà sarebbero tutte uguali perchè sono prese tramite php..è che per far le prove sto incasinando un po tutto.


    questa è la parte che mi interessa.e tutto questo per capire il primo giovedi utile di quella settimana quand'è in questo modo magari sommando e sottraendo la differenza tra la data di inizio e quella finale dovrei riuscirci.
    Codice PHP:
    DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-03 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY
    WEEKOFYEAR('2008-11-03 ')numero della settimana dell'anno (è la 45 oggi)
    CONCAT('2008',WEEKOFYEAR('2008-11-03 ') => per avere la stringa '200845'
    CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-03 '),giorno_settimana))=> '200845 Friday'
    STR_TO_DATE(CONCAT........'),giorno_settimana)), '%X%V %W')=> '2008-11-14'

    usato date_sub per togliere i 7 giorni perche per qualunque data io metta..che sia il primo di gennaio o il 31 dicembre o 5 di agosto mi data il giorno della settimana ma della settimana dopo

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    fatta :P
    questo è il risultato...apro un altro post per chieder aiuto per ottimizzare la query intera dato che questo è solo un pezzo...è troppo lenta cosi come l'ho pensata.
    Codice PHP:
    SELECT FROM eventi WHERE ripetibile='1' AND 
    (
        (
            
    '2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY
                AND 
            
    '2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY),DATEDIFFdata_fidata_in ))
        )
        OR
        (
            
    '2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY)
                AND 
            
    '2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY),DATEDIFFdata_fidata_in ))
        )


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.