1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| /****************************************************************************/
-- conversion d'heure décimale en heure minute seconde littérale
/****************************************************************************/
CREATE FUNCTION FN_CONVERT_HD_HMS (@HD FLOAT)
RETURNS VARCHAR(8)
AS
BEGIN
DECLARE @H INTEGER
DECLARE @M INTEGER
DECLARE @S INTEGER
DECLARE @RETVAL VARCHAR(8)
-- cas trivial
IF @HD IS NULL
RETURN NULL
-- récupération des heures, minutes, secondes
SET @H = FLOOR(@HD)
SET @HD = @HD - @H
SET @HD = @HD * 60
SET @M = FLOOR(@HD)
SET @HD = @HD - @M
SET @HD = @HD * 60
SET @S = FLOOR(@HD)
IF @H < 10
SET @RETVAL = '0'+CAST(@H AS CHAR(1))+':'
ELSE
SET @RETVAL = CAST(@H AS CHAR(2))+':'
IF @M < 10
SET @RETVAL = @RETVAL + '0' + CAST(@M AS CHAR(1))+':'
ELSE
SET @RETVAL = @RETVAL + CAST(@M AS CHAR(2))+':'
IF @S < 10
SET @RETVAL = @RETVAL + '0' + CAST(@S AS CHAR(1))
ELSE
SET @RETVAL = @RETVAL + CAST(@S AS CHAR(2))+':'
RETURN @RETVAL
END
GO |
Partager