2010-03-22 6 views

risposta

5

Presumibilmente, se si memorizzano date più recenti, non saranno mai necessari più di 256 valori possibili anno, che si adatta esattamente in un byte. Ciò consente di risparmiare una quantità significativa di spazio: anziché utilizzare più byte per memorizzare l'intero 1901, 1900 anni di cui può essere considerato ridondante in molti casi, MySQL lo considera internamente solo come numero 1 e lo visualizza al 1901 a proprio vantaggio.

Se sono necessari più anni, utilizzare un tipo basato su INT.

1

Per inserire il valore in un singolo byte. La scelta del 1901-2155 è arbitraria, ma il fatto che supporti valori del valore di 1 byte non lo è.

0

Il tipo di anno è un tipo a un byte. Un byte = 256 valori. Probabilmente fatto in questo modo perché la maggior parte delle date sarà in tale intervallo in modo da risparmiare byte ...

È possibile utilizzare una stringa per le date precedenti.

+1

No grazie sull'utilizzo di stringhe. Se il tipo DATE ('1000-01-01' a '9999-12-31') non copre l'utente, quindi esegui l'aspirazione e utilizza 3 campi interi, altrimenti utilizzi tonnellate di spazio non necessario. È la differenza tra 4 byte e 10 byte. – Matchu

+0

Mai e poi mai usare stringhe per memorizzare le date! Usa il tipo appropriato - a meno che non ci sia altro modo, usare i tipi appropriati ti dà tutti i benefici: nessun problema di formattazione delle stringhe, possibilità di estrarre parti, ordinamento corretto, calcolare le differenze tra le date e così via, e così via. –