Visualizzazione dei risultati da 1 a 9 su 9

Discussione: operazioni sulle date

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    operazioni sulle date

    Ciao

    In un campo di un form faccio inserire la data in questo formato:

    16/12/2010

    Ora la data mi servirà in php anche per effettuare delle operazioni del tipo

    "seleziona tutti i documenti da una data ad un'altra";

    "aggiungi alla data 30 (oppure 60) giorni e salva la nuova data";

    "verifica se la data inserita è uguale a quella del sistema (oggi) oppure mancano tot giorni";

    Alla luce di ciò secondo voi in quale formato mi conviene inserire la data nel db mysql?
    In timestamp, in DATE o cosa?

    Grazie

  2. #2
    formato ansi come previsto da mysql. yyyy-mm-dd in campo date

    where '$tua_data' between una AND altra

    update tab set data = data + interval 30 day where lo saprai tu

    select * from tab
    where data = curdate()

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da piero.mac
    formato ansi come previsto da mysql. yyyy-mm-dd in campo date

    where '$tua_data' between una AND altra

    update tab set data = data + interval 30 day where lo saprai tu

    select * from tab
    where data = curdate()
    quindi dici che mi conviene usare il formato date per il db.

    Ma la data inserita dall'utente come 16/12/2010 (giorno, mese, anno)
    la devo quindi trasformare in anno, mese, giorno (e fare l'operazione inversa quando la devo richiamare dal db e visualizzarla) e poi caricarla nel DB?

    L'operazione sulla data oltre che a caricarla la devo prima visualizzare.
    Con quel formato in php si può fare? Come?

    Grazie

  4. #4
    Originariamente inviato da lucas726
    quindi dici che mi conviene usare il formato date per il db.

    Ma la data inserita dall'utente come 16/12/2010 (giorno, mese, anno)
    la devo quindi trasformare in anno, mese, giorno (e fare l'operazione inversa quando la devo richiamare dal db e visualizzarla) e poi caricarla nel DB?

    L'operazione sulla data oltre che a caricarla la devo prima visualizzare.
    Con quel formato in php si può fare? Come?

    Grazie
    per estrarla dal db userai date_format(), per inserirla nel db str_to_date()

    select *, date_format(campo_data, '%d/%m/%Y') as data_it from tab ...

    insert into tab (ciccio, campo_data) values ('$ciccio', str_to_date('16/12/2010', '%d/%m/%Y'));

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da piero.mac
    per estrarla dal db userai date_format(), per inserirla nel db str_to_date()

    select *, date_format(campo_data, '%d/%m/%Y') as data_it from tab ...

    insert into tab (ciccio, campo_data) values ('$ciccio', str_to_date('16/12/2010', '%d/%m/%Y'));
    Proviamo. Grazie.

    Se trovo difficoltà mi faccio risentire.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da piero.mac
    formato ansi come previsto da mysql. yyyy-mm-dd in campo date

    where '$tua_data' between una AND altra

    update tab set data = data + interval 30 day where lo saprai tu

    select * from tab
    where data = curdate()
    rieccomi piero.

    Ho seguito il tuo suggerimento sia per inserire sia per richiamare e stampare le date dal db.

    Ok, adesso devo fare in modo di lanciare una query che richiami i record solo dopo una certa data, prima di una certa data e infine tra un intervallo e un altro ( a secondo di cosa ha scelto l'utente).

    Mi ha scritto sopra:

    where '$tua_data' between una AND altra (ad esempio)

    però devo sempre trasformare la mia data (inserita) dal dormato dd/mm/yyyy
    a quello standard del db yyyy-mm-dd.
    Cosa devo fare esattamente?
    Usare lo stesso comando date format?
    Come esattamente?

    Grazie ancora e ciao

  7. #7
    where str_to_date('$tua_data', '%d/%m/%Y') between una AND altra (ad esempio)

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da piero.mac
    where str_to_date('$tua_data', '%d/%m/%Y') between una AND altra (ad esempio)
    ok provo e ti faccio sapere il prima possibile.
    Grazie ancora per la disponibilità.

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da piero.mac
    where str_to_date('$tua_data', '%d/%m/%Y') between una AND altra (ad esempio)
    rieccomi


    allora

    per selezionare i record da una data in poi lancio questa

    query:

    SELECT * FROM nota where giorno >= str_to_date('$inizio', '%d/%m/%Y') ORDER BY giorno DESC";

    per selezionare tutto fino ad una certa data questa:

    $tutto = "SELECT * FROM nota where giorno <= str_to_date('$fine', '%d/%m/%Y') ORDER BY giorno DESC";

    e infine selezionare i record compresi tra 2 date (incluse quelle passate):

    $tutto = "SELECT * FROM nota where giorno >= str_to_date('$inizio', '%d/%m/%Y') and giorno <= str_to_date('$fine', '%d/%m/%Y') ORDER BY giorno DESC";
    }

    Pensi che vadano bene? Nel senso che posso aspettarmi risultati esatti?
    Ancora devo completare iil resto del codice e quindi ancora le devo provare a dire il vero.

    Per l'ultima query meglio il between che mi hai suggerito sopra o il codice della mia query è ugualmente valido?

    ah dimenticavo per ricavare e stampare sempre la data nel formato italiano
    devo sempre utilizzare

    date_format(giorno, '%d/%m/%Y')

    quindi le query devono essere modificate in una cosa del genere:

    SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM nota where giorno >= str_to_date('$inizio', '%d/%m/%Y') ORDER BY giorno DESC";

    Tutto giusto?


    Grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.