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

Discussione: [MySql] Between date

  1. #1

    [MySql] Between date

    Salve a tutti.
    tabella: tb_obiettivo_verifica
    campo1: work_start
    campo2: work_end

    Sto eseguendo questa query:
    codice:
    select * from agenda.tb_obiettivo_verifica WHERE ('2012-07-05' BETWEEN tb_obiettivo_verifica.work_start AND tb_obiettivo_verifica.work_end) and id_user =28
    Voglio verificare se la data odierna è compresa tra i campi work_start e work_end.
    Non capisco coma mai, se controllo la data odierna, non mi restituisce nessun record.
    Eppure nel campo work_start la data è 2012-07-05 e nel work_end è 2012-07-31.

    Mi dite dove sbaglio?
    Grazie mille.

  2. #2
    ragazzi scusatemi, ho fatto un errore io.
    avendo i campi sopra indicati di tipo datetime avevo dimenticato di inserire all'interno della data odierna anche l'ora,minuti e secondi.
    ora sembra funzionare tutto:
    codice:
    select * from agenda.tb_obiettivo_verifica WHERE ('2012-07-05 12:00:20' BETWEEN tb_obiettivo_verifica.work_start AND tb_obiettivo_verifica.work_end) and id_user =28
    grazie mille

  3. #3
    purtroppo devo fare un controllo sulla differenza delle date.
    Avevo pensato in questo modo, girando un po per il web
    codice:
    SELECT DATEDIFF(day, '2012-07-15','2012-07-05');
    ma sta funzione non funge mi restituisce questo errore:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2012-07-05')' at line 1

    e cioè?mica l'ho capita...
    praticamente mi serve eseguire questa differenza per vedere quali record sono scaduti.
    Se sono scaduti eseguire un update di un campo.

    suggerimenti?
    vi ringrazio come sempre.

  4. #4
    ho provato anche cosi:
    codice:
    SELECT DATEDIFF(day,tb_obiettivo_verifica.work_start,tb_obiettivo_verifica.work_end) as differenza from tb_obiettivo_verifica
    mi restituisce sempre lo stesso errore....

  5. #5
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da ANTAGONIA
    ho provato anche cosi:
    codice:
    SELECT DATEDIFF(day,tb_obiettivo_verifica.work_start,tb_obiettivo_verifica.work_end) as differenza from tb_obiettivo_verifica
    mi restituisce sempre lo stesso errore....
    Usa così

    codice:
    SELECT DATEDIFF('2012-07-15','2012-07-05');
    senza day

  6. #6
    da paura.....ti ringrazio della gentilezza....alla prox buona giornata

  7. #7
    scusami, ancora, ma....ho la necessità di aggiornare un campo se trovo che la data è scaduta.
    Quindi attraverso il tuo consiglio che con la select funziona alla grande, come posso applicarla ad un update?
    grazie ancora

  8. #8
    credo si faccia cosi?
    codice:
    UPDATE agenda.tb_obiettivo_verifica SET attivo="4" WHERE DATEDIFF( agenda.tb_obiettivo_verifica.work_start, agenda.tb_obiettivo_verifica.work_end )>0
    giusto?

  9. #9
    Originariamente inviato da ANTAGONIA
    credo si faccia cosi?
    codice:
    UPDATE agenda.tb_obiettivo_verifica SET attivo="4" WHERE DATEDIFF( agenda.tb_obiettivo_verifica.work_start, agenda.tb_obiettivo_verifica.work_end )>0
    giusto?
    Boh! questo lo devi sapere tu se va bene.

    intanto datediff conteggia solo la data e non considera l'orario, e quindi compara la data_start meno la data_end e se > 0 effettua la modifica. Su tutti i record.... che risultano con la data start superiore alla data end. E' proprio questo che vorresti fare?

    In pratica salva dalla modifica solo se si trattasse di start-end nello stesso giorno. Quello che voglio dire e' che se la data end supponi di metterla solo quando effettivamente avviene la chiusura tanto vale che quando chiudi metti attivo = 4 o quel che sara'

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

  10. #10
    ciao piero buon giorno....
    1) dicendo: "credo sia giusto è perchè, avrei piacere di poter confrontarmi con voi più esperti, perchè si vedere le guide,ma poi le casistiche sono sempre diverse".

    2) quindi se conteggia solo la data e non l'orario, eseguo prima una substr dei due campi?

    3) se la data è >1 mi deve aggiornare il campo "attivo" da valore 1 a 0, su tutti quei campi dell'utente x.
    Tanto dovrò aggiornare un campo al mese, per tot utenti quindi,no problem.E' proprio questo quello che volevo.

    4) per quanto riguarda:la data work_end.
    Praticamente, l'utente quando entra nella sezione rubrica, deve scegliere un livello, appena scelto da qui, inserisco la data di inizio work_start e la data di fine in work_end.
    Quindi già ho le due date.Che poi lui può cambiare man mano che completa dei passaggi.

    Adesso una domanda:
    ho provato ad eseguire l'update in questo modo,dopo che mi hai suggerito che DATEDIFF non considera l'orario.
    codice:
    UPDATE agenda.tb_obiettivo_verifica SET attivo="0" WHERE DATEDIFF( substr(agenda.tb_obiettivo_verifica.work_start,0,10), substr(agenda.tb_obiettivo_verifica.work_end,0,10))>0 and agenda.tb_obiettivo_verifica.id_user='28'
    Non mi restituisce nessun errore, ma non aggiorna il campo attivo.
    Sapresti dirmi come mai?

    Invece in questo modo funziona:
    codice:
    UPDATE agenda.tb_obiettivo_verifica SET attivo="0" WHERE DATEDIFF( agenda.tb_obiettivo_verifica.work_start, agenda.tb_obiettivo_verifica.work_end )>0
    and agenda.tb_obiettivo_verifica.id_user='28'
    mma...
    grazie ancora

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.