Archive

Archive for October, 2013

Arrondi d’un intervalle de dates sous Teradata

October 23rd, 2013 No comments

Teradata  nous réserve décidément bien des surprises dès qu’il s’agit de manipuler des arrondis. Nous l’avons vu précédemment sur des arrondis de nombres équidistants de deux bornes, mais c’est aussi vrai lors du calcul d’une différence de dates.

Dans notre cas, une compagnie aérienne souhaite différencier les vols en fonction de leur durée en heures.

Pour cela, on part des Date/heure de départ et arrivée pour un calcul simple : Date/heure Fin – Date-/heure début.

Sous Teradata, on aurait donc  :

SELECT CAST(CAST(‘2013-07-26 18:12:00′ AS TIMESTAMP(0))-CAST(‘2013-07-26 16:10:00′ AS TIMESTAMP(0)) HOUR(4)) AS INTEGER)

— résultat => 2, arrondi de 2 heures et 2 minutes

L’arrondi paraît logique;  il l’est beaucoup moins dans le cas suivant :

SELECT CAST((CAST(‘2013-07-26 18:00:00′ AS TIMESTAMP(0))-CAST(‘2013-07-26 15:58:00′ AS TIMESTAMP(0)) HOUR(4)) AS INTEGER)

— résultat => 3, arrondi de 2 heures et 2 minutes !!

Read more…