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

Discussione: conversione orario

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168

    conversione orario

    Ciao ragazzi,
    nella mia tabella ho un campo time i cui valori sono del tipo:

    TIME
    16:23:04
    15:53:37
    .........

    e così via. Ho necessità che i valori di questo campo siano espressi in secondi che sono trascorsi dopo mezzogiorno. Quindi se ho come valore 13:00:00, dovrò misurare la differenza in secondi tra le 12:00:00 e le 13:00:00...non so se mi sono spiegata.
    Come posso procedere?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    select time_to_sec(timediff(campo_time,'12:00:00')) as secondi from ...

    ovviamente per orari antecedenti mezzogiorno avrai valori negativi.

    Sul manuale trovi tutte le funzioni temporali

    http://dev.mysql.com/doc/refman/5.1/...functions.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Io però voglio che succeda questo:

    Orario successivo alle 12

    Orario=13:00

    Calcolo = secondi che intercorrono dalle 12:00 alle 13:00 à 1 ora (da trasformare in secondi)

    Orario antecedente alle 12

    Orario = 11:00

    calcolo = secondi che intercorrono dalle 12:00 (del giorno prima) alle 11:00 à 23 ore (da trasformare in secondi)

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select campo_time,
    if(campo_time>='12:00:00',time_to_sec(timediff(campo_time,'12:00:00')),time_to_sec(timediff('12:00:00',campo_time))) as differenza
    from tabella

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    ehm..dice che alla linea 2 c'è un errore di sintassi! Quale?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La query è corretta.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Ok, funziona..ma vengono fuori i numeri negativi!
    Stavo pensando che per ottenere quello che voglio,mi basta sottrarre ai secondi che ci sono in una giornata (86400) i numeri negativi che ottengo, considerati in valore assoluto.
    Così tornano i conti, giusto?
    Come scrivo questo?

    select campo_time,
    if(campo_time>='12:00:00',time_to_sec(timediff(cam po_time,'12:00:00')),time_to_sec(timediff('12:00:0 0',campo_time)))
    if campo_time<0, (86400 - abs(campo_time))
    from tabella

    ovviamente mi dà errore.
    Mi aiutate, please?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da lilux
    Ok, funziona..ma vengono fuori i numeri negativi!
    Non mi risulta proprio.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Purtroppo a me si..

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    A seconda che l'orario sia antecedente o meno a mezzogiorno, viene sottratto il valore minore da quello maggiore. Come può restituire un valore negativo?

    Fammi un esempio concreto di orario che ti restituisce un numero negativo.

    edit.

    codice:
    select campo_time,
    if(campo_time>='12:00:00',time_to_sec(timediff(campo_time,'12:00:00')),time_to_sec(timediff(campo_time,'12:00:00'))+86400) as differenza
    from tabella
    I valori non potevano mai essere negativi ma c'era un errore di logica.
    Adesso dovrebbe essere giusto. Credo.

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.