27
Apr/09
1

Mes notes: Les types de données temporelles

Type Bytes Range
DATE 3 1000-01-01 à 9999-12-31
TIME 3 -838:59:59 à 838:59:59
DATETIME 8 1000-01-01 00:00:00 à 9999-12-31 23:59:59
TIMESTAMP 4 1970-01-01 00:00:00 à mi-2037
YEAR 1 1901 à 2155 pour YEAR(4) et 1970 à 2069 pour YEAR(2)

(Des valeurs peuvent excéder le range, sans garantie sur le résultat)

Chaque type peut avoir 0 comme valeur pour représenter une valeur insérée illégale. Le format par défaut est YYYY-MM-DD. Cependant, le format YYYY-M-D (2009-1-1) est supporté. De plus, le séparateur – n’est pas obligatoire, on peut également utiliser / (2009/01/01)

L’affichage des années peut se faire avec 2 ou 4 chiffres. Lorsque représenté avec 2 chiffres, 70 à 99 représente 1970 à 1999 alors que 00 à 69 représente 2000 à 2069.

Pour que les timestamps s’updatent automatiquement à l’insertion ou l’update, il faut spécifier l’option DEFAULT CURRENT_TIMESTAMP ou ON UPDATE CURRENT_TIMESTAMP. Cependant, pour conserver une compatibilité avec MySQL 4.1, ils sont considérés par défaut sur la première colonne timestamp.

Les 2 attributs peuvent être setté sur le même champ, mais il est impossible de mettre 1 différent attribut sur 2 champs. Par contre, la compatibilité avec MySQL 4.1 permet de tricher en ne spécifiant pas le DEFAULT CURRENT_TIMESTAMP sur la première colonne, et le ON UPDATE.. sur une 2ieme.

Si on ne veut pas qu’une colonne timestamp s’update automatiquement, il faut explicitement mettre sa par défaut à NULL.

Pour modifier le timezone, il faut changer la variable système : SET global time_zone = ‘+05 :00′; Par défaut, c’est le timezone du système. Si un client modifie le timezone, la même valeur sera différente d’un client à l’autre. Ce changement modifie aussi la valeur retournée par NOW().

SELECT CONVERT_TZ(’2005-01-27 13:30 :00′,’+01:00′,’+03:00);

2005-01-27 15:30 :00

Comments (1) Trackbacks (0)
  1. Adrien
    4:08 am on May 2nd, 2009

    Toujours pratique à avoir sous le coude, le genre d’article à Ctrl+D !

Leave a comment

No trackbacks yet.