Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Originariamente inviato da jonathanphp
    Cercherò di essere più chiaro... l'output è 01/01/1970 invece di 01/12/2040 ed ho parlato di 00:00:00 perché ho provato a risolvere cambiando il tipo da date a datetime. 00:00:00 è comparso nel momento in cui ho cambiato il tipo. In questo caso vorrei capire semplicemente come è possibile che un output è corretto soltanto fino all'anno 2038. Qual'è la logica? Devo trovare una soluzione è una cosa importante.

    daniele_dll dici che dovrei aggiornare mysql? Però è strano... Versione MySQL: 5.5.8
    Non mi sembra vecchissima
    Mysql non ti rende un output come 01/01/1970.

    Per avere un output del genere devi per forza utilizzare qualche altra funzione.
    01/01/1970 vale tanto come lo 0000-00-00 di mysql cioe' data non valida o fuori range unix.

    Posta il codice utilizzato.

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

  2. #12
    forse non hai capito... questa funzione va alla perfezione, è come mi ha scritto Alhazred, e cioè che va fino a quella data, 2038

  3. #13
    Originariamente inviato da piero.mac
    Mysql non ti rende un output come 01/01/1970.

    Per avere un output del genere devi per forza utilizzare qualche altra funzione.
    01/01/1970 vale tanto come lo 0000-00-00 di mysql cioe' data non valida o fuori range unix.

    Posta il codice utilizzato.
    PS: beh, se disabiliti lo strict mode di mysql puoi utilizzare lo 0000-00-00 così come il 9999-99-99 ... la cosa diviene "meno" portabile, ma se la portabilità non è una feature che interessa il problema non c'è
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #14
    Originariamente inviato da jonathanphp
    forse non hai capito... questa funzione va alla perfezione, è come mi ha scritto Alhazred, e cioè che va fino a quella data, 2038
    ma il campo DATE non va fino a 2038, lo supera, ed anche di parecchio ... lo puoi impostare anche a 9999-12-31
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #15
    Originariamente inviato da daniele_dll
    PS: beh, se disabiliti lo strict mode di mysql puoi utilizzare lo 0000-00-00 così come il 9999-99-99 ... la cosa diviene "meno" portabile, ma se la portabilità non è una feature che interessa il problema non c'è
    Il campo DATE supporta da 1000-01-01 up to 9999-12-31.

    un 99 come giorno o mese ti renderebbero una data nulla 0000-00-00.

    Lo UNIX timestamp invece:
    The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.)
    Pero' non tutti gli OS supportano le date negative (anteriori al 01/01/1970)

    Quello che avevo detto in precedenza a jonathanphp e che mysql NON rende la data in quel formato ma che questa viene tradotta da una funzione. Quindi il problema (se problema fosse) potrebbe essere proprio in questa funzione che ci viene assicurato vada alla perfezione. quindi...

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

  6. #16
    The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.
    sacro santo, ma ... l'unica eccezione (certa) a questa regola è il valore 0000-00-00 in quanto mysql lo permette perché lo usa anche lui quando deve inserire valori non corretti

    comunque il manuale non indica il 1970 come "porto" sicuro, si limita a specificare che supportato significa che fino a 9999-12-31 non ci sono problemi ma che le date con valori bassi potrebbero non funzionare ... personalmente credo difficile che ci sia qualche piattaforma/architettura su cui MySQL utilizza il normale timestamp unix per gestire le date in quanto il campo DATE è utilizzato in primis proprio per conservare date che potenzialmente possono scendere sotto il 1970 (leggasi date di nascita) ... sarebbe una strage altrimenti

    in realtà, tranne che si lavori con piattaforme strane o con versioni eccessivamente vecchie, non ci sono problemi particolari con le date.

    In realtà sia su windows, con MySQL 5.1 e 5.5, sia su linux, con mysql 5.1, in entrambi senza specificare nell'sql mode ALLOW_INVALID_DATES, riesco tranquillamente a inserire valori non presenti nel range (ovvero anteriori al 1000-01-01)
    Invece si ottiene il risultato descritto nel manuale se si lavora con le funzioni per le date al di fuori del range indicato (ma questo mi sembra scontato )

    L'unica piattaforma sul quale non ho mai messo MySQL e sulla quale non ho mai lavorato direttamente con MySQL è Mac OS X, non so se ci sono particolari situazioni li su ... anche se va considerato che alla fin fine su linux questa limitazione non c'è e probabilmente questa parte dell'implementazione di mysql è molto simile tra linux e mac os x (così come in freebsd e via dicendo)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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