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

    [mysql] operazioni particolari con le date

    ciao

    con le versioni di mysql dalla 4.1 in avanti sono state aggiunte diverse funzionalità in piu sulle date, tra cui

    codice:
    select STR_TO_DATE( '020305', '%d%m%y' )
    dove ad esempio è possibile convertire una stringa in data,

    come sapete ci sono diversi campi che si possono stampare, tra cui %w che stampa il numero del giorno della settimana(ad esempio sabato=6,domenica=0,ecc)

    che voi sappiate c'è un modo, dato un numero di ottenere la data relativa?

    ad esempio 5 corrisponde a venerdì e quindi a 01/04/05, oppure al venerdì successivo, a seconda di come sarà stata studiata la funzione....ma esiste questa possibilità?

    grazie nik
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    No, purtroppo non cosi' semplicemente. una data contiene tutti i valori necessari per l'estrazione, ma DAYOFWEEK() o WEEKDAY() rappresentano solo un giorno su sette di 52 settimane. Sapere che un determinato giorno era venerdi' e' semplice, ma sapere a quale settimana, giorno, mese anno appartiene un certo venerdi' e' tutta un'altra cosa.


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

  3. #3
    quello che temevo, però se si pensa solo "al futuro" non dovrebbe essere difficile...cioè, mi spiego meglio:

    io digito un numero qualsiasi tra 0 e 6

    ad es: 4

    allora:

    - guardo che giorno è oggi: 2005-04-02
    - lo converto in numero della settimana : DAYOFWEEK(2005-04-02) = 6
    - guardo quanti giorni mi servono per arrivare a quello richiesto: 7%6+4 = 5
    - aggiungo 5 giorni al 2005-04-02=2005-04-07

    ora il 2005-04-07 è giovedi prossimo..e il giovedi è il 4 giorno...

    devo verificare se lo 0 non da problemi nel passo tot_giorni%numero_oggi + giorni_richiesto


    tu cosa ne pensi?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    Ora non mi ricordo la soluzione che avevo adottato per un caso simile. Provo a cercare e poi ti faccio sapere.

    Ma se sai quale' il giorno che ti serve la prossima settimana puoi usare la nuova funzione DATEDIFF(), ma forse non ho capito bene quello che vuoi realizzare.

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

  5. #5
    no, il fatto è che per diverse ragioni devo fare un sistema che chiede all'utente una data, per semplificare l'inserimento invece che mettere la data l'utente metterà

    1 x lunedi
    2 x martedi

    e via cosi

    poi io ho la necessità di ricavare la data relativa, dato che non vado indietro nel tempo io guardo il prossimo lunedi, il prossimo martedi e via cosi x avere la data, ora sono riuscito a stabilire quanti giorni mancano x arrivare alla data richiesta con questa query

    codice:
    SELECT 7  % date_format( now(  ) ,  '%w'  )  +1
    ad esempio questa ritorna 2, ed è giusto dato che mancano 2 giorni a lunedi

    ora devo solo vedere se è possibile aggiungere tot giorni ad una data x ottenerne un'altra...questo credo si possa fare senza problemi
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  6. #6
    ok...

    tieni presente che se hai problemi con domenica = 0 la funzione DAYOFWEEK ti rende domenica = 1 ... sabato = 7 secondo la standard ODBC.

    Per sommare giorni lo sai da te... usa la nuova funzione ADDATE().



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

  7. #7
    esatto!

    infatti ora ho trovato!
    codice:
    SELECT ADDDATE( now(  ) , 7 % date_format( now(  ) ,  '%w'  )  +5  )
    devo aggiungere un ulteriore controllo, se il giorno richiesto è >= a quello odierno non devo andare alla settimana dopo

    cmq questa funziona!

    ho trovato questo approfondimento su mysql che spiega tutto su come sono gestite le date

    http://dev.mysql.com/doc/mysql/en/da...functions.html

    grazie!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  8. #8

    versione definitiva

    ok questa dovrebbe funzionare sempre!

    codice:
    SELECT ADDDATE( now(  ) , 7 % date_format( now(  ) ,  '%w'  )  +ipnut_utente - 
    IF ( date_format( now(  ) ,  '%w'  )  >input_utente, 0, 7  )  )

    esempio 1: (input = 4)

    codice:
     ADDDATE( now( ) , 7 % date_format( now( ) , '%w' ) +4 - IF ( date_format( now( ) , '%w' ) >4, 0, 7 ) )
    2005-04-07 16:35:17
    esempio 2: (input = 0)

    codice:
     ADDDATE( now( ) , 7 % date_format( now( ) , '%w' ) +0 - IF ( date_format( now( ) , '%w' ) >0, 0, 7 ) )
    2005-04-03 16:36:59
    esempio 3: (input = 6)

    codice:
     ADDDATE( now( ) , 7 % date_format( now( ) , '%w' ) +6 - IF ( date_format( now( ) , '%w' ) >6, 0, 7 ) )
    2005-04-02 16:38:42
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

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.