Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Salvataggio data in formato IT

    Ciao a tutti, ho qualche problemino con Zend e la gestione di date
    nel mio controller io ho:

    codice:
      foreach ($response  as $let){
    
                              $data = array(
                                    'codicecliente' => trim($codicecliente),
                                    'datale' => trim($let->_DATALE),
    ho provato a cambiare 'codicecliente' => trim($codicecliente), in
    'datale' => '01-01-10',

    ed ho notato che il campo date del mio DB visualizza:

    2001-01-10

    e non

    01-01-2010

    Cosa sbaglio? Come posso risolvere il probleama?

    Grazie
    Iceberg

  2. #2
    Se con mysql vuoi gestire una data come tale devi usare il formato ansi yyyy-mm-dd in un campo DATE/DATETIME

    Qualunque altro formato puo' essere memorizzato in un campo varchar, ma sara' una stringa a tutti gli effetti e non una data.

    Nel tuo caso '01-01-10' viene interpretato come anno a due cifre-mese-giorno e tradotto nella data ansi 2001-01-10 yyyy-mm-dd

    Se introduci una data non valida, cioe' fuori dal range ammesso, troverai per default 0000-00-00

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

  3. #3
    Ricordo che indipendentemente da come tu formatti la data, in MYSQL verrà sempre standardizzata in Y-m-d a meno che non la si personalizzi (anche se lo sconsiglio)

    per visualizzarla , previo prelevo dal db, utilizza la funzione date().
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  4. #4
    Originariamente inviato da ClaudioMalorgio
    per visualizzarla , previo prelevo dal db, utilizza la funzione date().
    non necessariamente, esistono delle funzioni di mysql per trasformare data/stringa tipo:

    date_format() -> da data a stringa
    str_to_date() -> da stringa a data

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

  5. #5
    Originariamente inviato da piero.mac
    non necessariamente, esistono delle funzioni di mysql per trasformare data/stringa tipo:

    date_format() -> da data a stringa
    str_to_date() -> da stringa a data
    Funzionano anche se nel db la data è in formato DATE?
    Programmatore - Consulenza informatica -
    Web Design - Professionista I.T.
    ---------------------------------------
    http://www.malorgio.it

  6. #6
    Originariamente inviato da ClaudioMalorgio
    Funzionano anche se nel db la data è in formato DATE?
    Beh! quelle funzioni le hanno create appositamente per quello.

    Guarda quante ne esistono solo per le date.....

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

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

  7. #7
    Scusate a tutti (grazie per le risposte) ma non ho ben capito cosa dovrei fare!

    Ora il formato nel DB è date, ma posso cambiare come voglio.... datetime.... altro

    Cosa devo fare a livello di codice che salvare in formato corretto e per poi visualizzarla nella mia griglia in formato ita??

    Precedentemente era in formato varchar(100) ma non riuscivo a fare nessun ordinamento.

    Grazie
    Iceberg

  8. #8
    e tte credo.... se ordini una data partendo dal valore meno significativo a sx come vuoi che la ordini? prima i giorni, poi i mesi e poi gli anni, ovvio no?

    Devi ordinarle secondo quanto prevede la matematica: il valore meno significativo a destra il piu' significativo a sinistra.

    Quindi se vuoi utilizzare le (tantissime) funzioni per il date/time devi memorizzare la data nel formato previsto yyyy-mm-dd in un campo formato DATE.

    Ora non si capisce cosa fai per ottenere la data in quell'array $data ma semplicemente devi "girare" i valori da inserire nel db. Esempio:

    Codice PHP:
    list($giorno$mese$anno) = explode('-''25-12-2010');
    $data_per_db "$anno-$mese-$giorno"

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

  9. #9
    Io devo salvare dei valori in un DB ... il WS mi ritorna valori in formato del tipo 25-12-10

    io devo salvarli nel DB MySQL in un campo date (o datetime)

    per poi, appunto, poterli ordinare.

    (poi avrò un secondo problema...se li salvo, come dite voi nel formato std, dovrò cmq ri-visualizzarli in formato ita dd-mm-yyyy)

    codice:
            $prova_db = new Application_Model_DbTable_Wsprova();
    
                    foreach ($response  as $prova){
    					      list($giorno, $mese, $anno) = explode('-', trim($prova->_DATAle));
                              $data = array(
                                    'codicecliente' => trim($codicecliente),
                                    //'datale' => trim($prova->_DATAle),
                              		//'datale' => date('d-m-y', trim($prova->_DATAle)),
                              		//'datale' => '01-01-10',                         		
    								'datale' => "$anno-$mese-$giorno",
                                    'dataleoriginale' => trim($prova->_DATAleORIGINALE),
                                    'idle' => trim($prova->_IDle)
                                  
                            );
    
                       //Vengono salvati nel DB i campi recuperati dal WS
                       $prova_db->addprova($data);

    ovviamente con

    'datale' => trim($prova->_DATAle),

    funzionava correttamente


    con

    'datale' => '01-01-10',

    come detto in precedenza mi salva la data invertendo i valori


    con l'ultima soluzione ipotizzata nell'ultima risposta non carica nulla


    Grazie
    Iceberg

  10. #10
    partiamo dal presupposto che poter inserire un qualcosa nel db devi fare una insert od aggiornare con un update. Nella stringa della insert ci sara' un punto ben preciso in cui si inserisce questa data benedetta.

    Ora se invece di mettere "quel che ti metti" visto che non so come esegui la query, devi inserire l'equivalente di $data_per_db di cui sopra.

    Insomma nomi e siglette che per te sono chiarissime a me, che del progetto conosco una cippa, sono emerite sconosciute.

    Vai all'origine del dato che ti produce dd-mm-yyyyy ed inverti la sequenza in yyyy-mm-dd. Tutto qui.

    Per estrarlo userai date_format().

    select *, date_format(campo_data, '%d-%m-%Y') as data_it from ciccino etc.....

    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.