2011-08-07 2 views

Répondre

3

Le numéro après le INT décrit simplement la largeur des colonnes lorsque vous les sélectionnez. Il ne contraint pas la plage de valeurs stockées dans ce champ. Un INT est un INT, peu importe le nombre que vous avez mis après.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

type numérique Attributs

MySQL supporte une extension pour spécifier éventuellement la largeur d'affichage de types de données entiers entre parenthèses après le mot clé de base pour le type. Par exemple, INT (4) spécifie un INT avec une largeur d'affichage de quatre chiffres. Cette largeur d'affichage facultative peut être utilisée par les applications pour afficher des valeurs entières ayant une largeur inférieure à la largeur spécifiée pour la colonne en les remplissant à gauche avec des espaces. (C'est-à-dire que cette largeur est présente dans les métadonnées renvoyées avec les ensembles de résultats, qu'elle soit utilisée ou non.)

La largeur d'affichage ne limite pas la plage de valeurs pouvant être stockée dans la colonne. . Cela n'empêche pas non plus que les valeurs plus larges que la largeur d'affichage de la colonne soient affichées correctement. Par exemple, une colonne spécifiée comme SMALLINT (3) a la plage SMALLINT habituelle de -32768 à 32767, et les valeurs en dehors de la plage permise par trois chiffres sont affichées en entier en utilisant plus de trois chiffres.

+0

@Chris Aaker ... pourquoi? :( –

+0

@pst En supposant que vous stockez le décalage en minutes, vous avez besoin d'une plage de -720 - 780 – nickf

+0

@nickf Silly me.Je pensais à DATETIMEOFFSET dans SQL Server.Il semble que MySQL repose sur un champ séparé ou une approche personnalisée. :) –

1

Une question piège!

Utilisez TIMESTAMP for UNIX timestamps et utilisez DATETIME pour les dates en dehors de la plage TIMESTAMP.

Bonne codification.

+0

haha ​​sympa. +1 – nickf

+0

Les horodateurs @Chris Aaker UNIX ont toujours fait référence à des dates actuelles et pratiques (sans trop de précision ou de soin pour les constructions humaines comme les fuseaux horaires ;-) - Je suis sûr que quand 2038 sera significativement plus proche, la gamme MySQL TIMESTAMP être étendu à 64 bits ou plus; juste comme l'extension logique d'un horodatage UNIX "normal". Heck, COBOL est toujours sur le point, mais j'espère vraiment que les systèmes "actuels" en 2038 seront bien au-delà des systèmes relationnels actuels ;-) –

Questions connexes