Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766

    Sottrazione di 2 date per avere il numero di giorni

    Devo sottrarre la data di partenza con la data di arrivo per avere il numero di giorni che un cliente resta in albergo.
    Se pero' le date si accavallano tra fine mese e inizio mese per esempio: 26/11 - 1/12 invece di darmi 5 notti mi da -25.
    Come mai?
    Ecco come calcolo:
    [php]
    <?$notti =($data_partenza - $data_arrivo);
    echo "$notti"; ?>
    ?>
    Come posso aggiustare ??
    La query la faccio cosi':
    Codice PHP:
    $sql "select id, DATE_FORMAT(data_arrivo, '%d/%m') AS data_arrivo, DATE_FORMAT(data_partenza, '%d/%m/%Y') AS data_partenza from $tabella where id = \"$id\""
    I 2 campi sono di tipo date con predefinito 0000-00-00

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    select to_days('2006-12-01') - to_days('2006-11-26') as diff

    al posto delle date metti il nome dei campi

  3. #3
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da nicola75ss
    select to_days('2006-12-01') - to_days('2006-11-26') as diff

    al posto delle date metti il nome dei campi
    si ma devo anche stampare le date in outpoot, e facendo cosi' mi escono in modalita' anno/mese/giorno.
    Come le metto in giorno/mese/anno usando as diff??

  4. #4
    usa date_format come facevi in precedenza.

    La conta vive di vita autonoma....

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

  5. #5
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da piero.mac
    usa date_format come facevi in precedenza.

    La conta vive di vita autonoma....
    e quindi cosi'?
    Codice PHP:
    $sql "select id, to_days(DATE_FORMAT(data_arrivo, '%d/%m')) AS data_arrivo, - to_days((DATE_FORMAT(data_partenza, '%d/%m/%Y')) AS data_partenza as diff from $tabella where id = \"$id\""
    ma mi sa di no...

  6. #6
    hai molta piu' fantasia di mysql....

    codice:
    $sql = "select id, 
    DATE_FORMAT(data_arrivo, '%d/%m') AS data_arrivo, 
    DATE_FORMAT(data_partenza, '%d/%m/%Y') AS data_partenza,
    to_days(data_partenza) - to_days(data_arrivo) as diff
    from $tabella where id = \"$id\"";

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

  7. #7
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da piero.mac
    hai molta piu' fantasia di mysql....

    codice:
    $sql = "select id, 
    DATE_FORMAT(data_arrivo, '%d/%m') AS data_arrivo, 
    DATE_FORMAT(data_partenza, '%d/%m/%Y') AS data_partenza,
    to_days(data_partenza) - to_days(data_arrivo) as diff
    from $tabella where id = \"$id\"";
    il problema e' che quando inserisco i dati ho i campi
    arrivogiorno, arrivomese, arrivoanno
    partenzagiorno, partenzamese, partenzaanno

    che poi mi costruiscono
    $data_arrivo e $data_partenza

    Facendo la query come dici tu, mi da sempre -23 giorni...

  8. #8
    Originariamente inviato da Tr|k`Tr4k
    il problema e' che quando inserisco i dati ho i campi
    arrivogiorno, arrivomese, arrivoanno
    partenzagiorno, partenzamese, partenzaanno

    che poi mi costruiscono
    $data_arrivo e $data_partenza

    Facendo la query come dici tu, mi da sempre -23 giorni...
    fermi tutti.... io ti ho detto che puoi fare le tre richieste in modo indipendente ovviamente non dovresti chiamare l'alias dei campi con lo stesso nome di quelle esistenti altrimenti le sovrascrive..... non avevo guardato questo.... per evitarlo basta fare il conteggio prima del date format oppure dare un nome diverso altrimenti se usi quell'alias per l'ordinamento avresti un'altra storia buffa.

    Certo che .... idee no.

    codice:
    $sql = "select id,
    to_days(data_partenza) - to_days(data_arrivo) as diff,
    DATE_FORMAT(data_arrivo, '%d/%m') AS arrivo, 
    DATE_FORMAT(data_partenza, '%d/%m/%Y') AS partenza
    from $tabella where id = \"$id\"";

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

  9. #9
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da piero.mac
    fermi tutti.... io ti ho detto che puoi fare le tre richieste in modo indipendente ovviamente non dovresti chiamare l'alias dei campi con lo stesso nome di quelle esistenti altrimenti le sovrascrive..... non avevo guardato questo.... per evitarlo basta fare il conteggio prima del date format oppure dare un nome diverso altrimenti se usi quell'alias per l'ordinamento avresti un'altra storia buffa.

    Certo che .... idee no.

    codice:
    $sql = "select id,
    to_days(data_partenza) - to_days(data_arrivo) as diff,
    DATE_FORMAT(data_arrivo, '%d/%m') AS arrivo, 
    DATE_FORMAT(data_partenza, '%d/%m/%Y') AS partenza
    from $tabella where id = \"$id\"";
    ma facendo cosi' mi stampa:

    2006-11-24 Out 2006-12-01 ( 0 notti)

  10. #10
    Originariamente inviato da Tr|k`Tr4k
    ma facendo cosi' mi stampa:

    2006-11-24 Out 2006-12-01 ( 0 notti)
    quello che ti stampa dipende da quello che hai nella tabella mica dalla query che ti abbiamo suggerito.

    data maggiore - data minore = diff
    la formattazione delle date.

    se invece di campi sono variabili create con il php mettici le variabili...

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

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.