7.2.6.2 Le type TIME

MySQL retourne et affiche les valeurs de type TIME aux formats 'HH:MM:SS' ou 'HHH:MM:SS'. Les valeurs de type TIME vont de '-838:59:59' à '838:59:59'. Le nombre d'heure peut être rendu aussi grand afin de pouvoir représenter les heures du jour, mais aussi de faire des calculs de différence d'heure entre deux jours, ce qui conduit à des durée très supérieures à 24h, voire même des valeurs négatives.

Les valeurs de type TIME peuvent être définies de nombreuses manières différentes :

  • Une chaîne de format 'HH:MM:SS'. Les :' ne sont pas obligatoires, et ils peuvent être remplacé par n'importe quel caractère non numérique. Par exemple, , '10:11:12' et '10.11.12'sont équivalents..
  • Une chaîne sans délimiteurs, au format'HHMMSS', en supposant qu'elle est un sens en tant que date. Par exemple, '101112' sera interpreté comme '10:11:12', mais '109712' n'est pas valide et deviendra '00:00:00'.
  • Un nombre au format HHMMSS, en supposant que cela ait un sens. Par exemple, 101112 vaudra . '10:11:12'
  • Le résultat d'une fonction qui retourne une valeur acceptable en dans un contexte de DATETIME, DATE or TIMESTAMP, comme NOW() or CURRENT_DATE.

Pour les valeurs de type TIME spécifiées au format chaîne avec des délimiteurs, il n'est pas nécessaire de préciser les deux chiffres pour les heures, minutes ou secondes. Ainsi, '8:3:2' et '08:03:02'.sont identiques.

Attention aux affections de valeurs courtes dans une colonne de type TIME. MySQL interprète les valeurs en supposant que les chiffres de gauche sont les secondes (MySQL interprète les valeurs de type TIME comme des intervalles de temps, plutôt qu'une date). Par exemple, '11:12', '1112' et 1112 pourraient être confondues avec '11:12:00' (12 minutes après 11 heures), mais MySQL le comprend comme '00:11:12' (11 minutes, 12 seconds). De même, '12' et 12 representent '00:00:12'.

Toutes les valeurs de TIME, qui sont hors de l'intervalle de validité sont ramenées à la valeur valide la plus proche. Ainsi, '-850:00:00' et '850:00:00' sont respectivement converties en'-838:59:59' et '838:59:59'.

Toutes les valeurs invalides de TIME sont converties en '00:00:00'. Il faut bien savoir que '00:00:00'est une valeur de TIME valide. Ainsi, si est stocké dans une table, il est impossible de dire si cela provient d'une erreur, ou si il a été affecté à cette valeur.