Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [php] Problema differenza date su due server diversi

    Salve, ho un problemino in un campo DATE:

    in locale su Linux ho un database con un formato DATE in gg/mm/aaaa. Online invece il formato date è in aaaa-mm-gg.

    In realtà potrei risolvere scrivendo:
    Codice PHP:
        $tempdate explode("/"$jmdatadinascita);
        
    $jmdatadinascita $tempdate[2]."-".$tempdate[1]."-".$tempdate[0];
        unset (
    $tempdate); 
    Il problema è che dovrei fare questa operazione decine di volte in vari script, perchè in effetti il display della data è giusto che sia gg/mm/aaaa, quindi in scrittura dovrei spezzarla e scriverla in aaaa-mm-gg e in lettura dovrei rispezzarla e riscriverla in gg/mm/aaaa.
    C'è una soluzione + rapida al problema?
    わさび

  2. #2
    Ciao.

    Vedi come gia' detto altre volte gg/mm/aaaa per il db e' un formato stringa. Cioe' non puo' essere utilizzato nel confronto di date.

    In altre parole se ti serve la data per confronti e ricerche, per tua comodita', questa deve essere nel formato yyyy-mm-dd. Potrai visualizzarla come ti pare ovviamente, ma nel trattamento del dato deve per forza di cose (per facilita' e semplicita') essere trattata come yyyy-mm-dd.

    Se utilizzi mysql 4.1.x trovi una nuova funzione STR_TO_DATE() che ti permette da una stringa come e' gg/mm/aaaa ricavare una data. E' praticamente l'opposto di DATE_FORMAT che da una data rende una stringa.

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

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    [supersaibal]Originariamente inviato da piero.mac
    Ciao.

    Vedi come gia' detto altre volte gg/mm/aaaa per il db e' un formato stringa. Cioe' non puo' essere utilizzato nel confronto di date.

    In altre parole se ti serve la data per confronti e ricerche, per tua comodita', questa deve essere nel formato yyyy-mm-dd. Potrai visualizzarla come ti pare ovviamente, ma nel trattamento del dato deve per forza di cose (per facilita' e semplicita') essere trattata come yyyy-mm-dd.

    Se utilizzi mysql 4.1.x trovi una nuova funzione STR_TO_DATE() che ti permette da una stringa come e' gg/mm/aaaa ricavare una data. E' praticamente l'opposto di DATE_FORMAT che da una data rende una stringa. [/supersaibal]
    Grazie per le delucidazione piero.mac,
    Il mio problema attuale non è confrontare date su due server diversi. È che in locale sul mio linux (php vers. 4.3.4) utilizzo uno script per inserire la data, che se esaminata da php myadmin è nel formato dd/mm/yyyy. Online invece, (php vers. 4.3.5 - mySql vers. 3.23.58) collegandomi a php myadmin ho notato che la data è in formato yyyy-mm-dd. Tu dici che dd/mm/yyyy non può esistere proprio nel databasse come formato DATA? Ho controllato e ho visto che è proprio in quel formato.
    Infatti uploadando gli script sul server (online) quando immetto una data (come farei in locale) invece mi ritorna 0000-00-00 :master:
    わさび

  4. #4
    Attento che phpmyadmin ha delle opzioni che permettono di "vedere" la data in formato gg/mm/aaaa quando questa e' memorizzata invece come yyyy-mm-dd

    Pero', pure con mysql 4.1 esiste una opzione per impostare il formato della data nelle variabili di sistema. Puo' darsi che hai questa opzione inserita, controlla le variabili di sistema con phpmyadmin e vedi intanto la versione di mysql e alla voce date format e datetime format.

    Ho provato tempo fa e funziona, cioe' puoi memorizzare la data nel formato che ti pare, pero' manchera' di portabilita' perche' se la trasferisci in un'altra realta' il risultato sara' una data nulla cioe' 0000-00-00.

    Se poi hai un server all'estero sei fatto. Bisognera' pure stare molto attenti al time zone poiche' si puo' ora impostare una zona diversa da quella locale e far casino e' molto facile. Tra l'altro mi pare nebulosa la documentazione riguardante il TIME ZONE. Comunque questo non c'entra con quanto sopra.

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

  5. #5
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Proverò a controllare come mi hai detto e eventualmente ti farò sapere.
    Per ora grazie e ciao
    わさび

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    [supersaibal]Originariamente inviato da piero.mac
    Attento che phpmyadmin ha delle opzioni che permettono di "vedere" la data in formato gg/mm/aaaa quando questa e' memorizzata invece come yyyy-mm-dd[/supersaibal]
    Ho controllato le opzioni di phpmyadmin ma non ho trovato niente a riguardo. Comunque per ora posso dirti che se esiste qualcosa che influisce sui settaggi della data non è solo sulla visualizzazione. Infatti se provo a ritornare la data "grezza" così com'è stata inserita nel database, sul primo (in locale) mi ritorna una data in formato dd/mm/yyyy; nell'altro (quello online) ritorna appunto nel formato yyyy-mm-dd. Per ora ho risolto con lo script che riformatta la data in maniera corretta. Resta comunque il dubbio su come mai ci siano queste impostazioni diverse: in locale non mi serve nessuno script aggiuntivo per funzionare, online si.
    Ora controllerò meglio e poi ti farò sapere.
    わさび

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.