Une fonction de calcul des changements d’horaires d’hiver et d’été

Voici une petite fonction qui vous donnera les date et heure ainsi que le décalage des heures locale par rapport à l’UTC (Universal Time Coordinate) pour la zone France.


CREATE FUNCTION dbo.F_CHANGEMENT_HEURE (@AN INT)
   RETURNS @T TABLE (JOUR DATETIME, SAISON VARCHAR(5), DECALAGE_UTC SMALLINT)
AS
BEGIN
   DECLARE @DD DATETIME;
-- passage à l'heure d'été, le dernier dimanche de mars à 1h
   SET @DD = CAST(CAST(@AN AS CHAR(4)) + '0331 00:01' AS DATETIME);
   WHILE DATEPART(weekday, @DD) <> 7
      SET @DD = DATEADD(day, -1, @DD);
   INSERT INTO @T VALUES (@DD, 'Hiver', +2);      
-- passage à l'heure d'hiver, le dernier dimanche d'octobre à 1h
   SET @DD = CAST(CAST(@AN AS CHAR(4)) + '1031 00:01' AS DATETIME);
   WHILE DATEPART(weekday, @DD) <> 7
      SET @DD = DATEADD(day, -1, @DD);
   INSERT INTO @T VALUES (@DD, 'Été', +1);            
   RETURN;
END    
GO

Exemple d’utilisation :


SELECT *
FROM   dbo.F_CHANGEMENT_HEURE(2009)
 
JOUR                    SAISON DECALAGE_UTC
----------------------- ------ ------------
2009-03-29 00:01:00.000 Hiver  2
2009-10-25 00:01:00.000 Été    1

--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence  * * * * *

MVP Microsoft SQL Server

Une réflexion au sujet de « Une fonction de calcul des changements d’horaires d’hiver et d’été »

  1. Avatar de cragorothcragoroth

    Bonjour,

    Je viens de voir votre fonction qui est intéressante mais peut-on l’utiliser dans SQL développeur pour SQL oracle ?

    J’ai du mal a exécuter la fonction. elle se cré bien mais présente une croix rouge à l’écran.

    merci de votre aide. (je débute avec sql oracle)

    bne journée

Laisser un commentaire