Quelle ne fut pas ma surprise quand j'ai découvert que le type TIME de SQL ne pouvait pas dépasser 24 heures...
Je voudrais stocker dans une colonne un nombre d'heure hebdo (35h, 37h30, etc.)
Le type TIME me séduisait bien, surtout que je vais devoir faire des requêtes en liaison avec des dates. Mais voilà, arrivé à 24h, ça me jette.
Du coup, je me dit "bon, ben va pour un DATETIME, dans lequel je ne vais pas mettre de mois et année...".
Sauf que là, le mois 0 de l'année 0 (et éventuellement le jour 0 pour les contrats de moins de 24 heures), ça marche pas non plus.
Et calculer à partie du 01/01/1900 ça me semble casse-tête chinois à l'avance...
Une solution ?
Du coup j'ai peur de devoir me replier sur DECIMAL (je veux pas entendre parler de FLOAT qui fait des erreurs d'arrondi, et INT c'est pas possible en raison de la présence de décimaux).
Sauf que DECIMAL n'est pas vraiment réputé pour ses performances.
Reste la solution de prendre un INT et multiplier par 60 pour gérer non pas en heures mais en minutes... Mais c'est pas super propre je trouve, et guère moins casse-tête que la solution à base de DATETIME.
Une meilleure idée ?
Pour info, je suis sous SQL Server, au cas où un type tombé du ciel existe sur ce SGBD.
Partager