IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Time Zone / Heure d'été / FireBird 5.0


Sujet :

SQL Firebird

  1. #1
    Membre du Club

    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 45
    Points
    45
    Par défaut Time Zone / Heure d'été / FireBird 5.0
    Bonjour à tous,

    Un petit souci avec l'heure d'été, sous FireBird 5.0 :

    - Dans Firebird 2.5.9 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Current_Time From RDB$DataBase;
    Fournissait toujours l'heure de l'OS (Serveur), indépendamment de la Time Zone. C'était simple et logique.

    - Ajourd'hui dans FireBird 5.0, Current_Time va chercher la Time Zone (dans FireBird.Conf)
    et fournit, non pas l'heure de l'OS, mais celle de la Time Zone.
    OK, j'en conviens.

    Mais, Comment retrouver la vraie heure de l'Os dans FireBird 5.0 sans Time Zone ?

    - Dans la Doc Fb 5.0 il est indiqué :
    Pour retrouver l'heure du Serveur sans Time Zone :

    1. Laisser DefaultTimeZone = (vide) dans FireBird.Conf
    2. et utiliser plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select LocalTime From RDB$DataBase;
    J' essaye :
    ca donne toujours Heure +1 (Heure d'été)
    alors que mon windows affiche 12:00, la requete indique 13:00
    (Heure d'été est désactivée dans mes paramètres windows).
    Le resultat voulu est : 12:00 et non 13:00

    Il semblerait que FB 5.0 ne prend pas en compte les paramètres de l'heure d'été de windows.

    Conclusion :
    Comment retrouver la vraie heure de l'Os dans FireBird 5.0 (comme Firebird 2.5.9) ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 223
    Points : 41 517
    Points
    41 517
    Billets dans le blog
    63
    Par défaut
    Bonjour,
    Dans firebird 2.5, cela donnait l'heure selon l'OS mais quand il y avait passage à l'heure d'été il était pris en compte
    Dans firebird 4 et donc 5 car pas de changement de ce côté là même si l'on a la timezone en plus on obtient toujours la valeur heure d'été prise en compte
    Nom : Capture.PNG
Affichages : 86
Taille : 41,0 Ko

    Pour que l'heure d'été ne soit pas prise en compte je partirai au contraire sur un TimeZone='00:00' ou autre dans firebird.conf
    et à l'occasion je jouerai sur la session (firebird.conf par défaut)
    # Default session or client time zone.
    #
    # If empty, the default is the OS time zone.
    # When set in the server, it defines the default session time zone for attachments.
    # When set in the client, it defines the default time zone used with client-side API functions and
    # the default value of isc_dpb_session_time_zone.
    #
    # Type: string
    #
    #DefaultTimeZone =
    Test :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET TIME ZONE '+00:00';
    SELECT 'Après SET TIME ZONE ' LIBELLE, CAST(CURRENT_TIME AS VARCHAR(60)) TEMPS_COURANT, LOCALTIME TEMPS_LOCAL FROM RDB$DATABASE;
    à 12:13 cela donne
    Après SET TIME ZONE 10:13:11.0000 +00:00 10:13:11.000
    ca donne toujours Heure +1 (Heure d'été)
    alors que mon windows affiche 12:00, la requete indique 13:00
    (Heure d'été est désactivée dans mes paramètres windows).
    Le resultat voulu est : 12:00 et non 13:00
    je ne pense pas que Firebird aille chercher les paramètres windows donc, dans ce cas, mettre SET TIME ZONE '+01:00'; pour la session
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre du Club

    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 45
    Points
    45
    Par défaut
    Merci SergioMaster,

    Votre expertise est pertinente.

    Dommage, qu'il faille re-programmer (dans l'exe), le SET TIME, à la volée
    Pour la France :
    tous les :
    31 mars (Heure été) --> SET TIME '+02:00'
    et 29 Octobre (Heure Hiver) --> SET TIME '+01:00'

    Qu'en est il pour l'internationalisation ?
    Ca complique les choses. N'est-ce pas !
    C'était tellement facile avec FireBird 2.5.9 (on avait l'Heure de l'OS directement).

    Encore Merci...

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 223
    Points : 41 517
    Points
    41 517
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par moyzer Voir le message
    Qu'en est il pour l'internationalisation ?
    Ca complique les choses. N'est-ce pas !
    Cela complique peut-être, en fait je n'en suis pas sûr. Il me semble qu'au contraire utiliser la TIME ZONE va dans le sesn de l'internationalisation.
    En effet prenons le cas d'un représentant à l'international qui interroge une base en France, avec FB 2.5 pas de souci on lui montre les heures "FRANCE" maintenant, si, a contrario, il fait une saisie de temps (via son teléphone mobile qui est à l'heure en fonction de sa position) que se passe t-il ?

    N'oublions pas aussi que Firebird est multi-OS donc que se passe t-il sur Linux, MAC ou Android ?

    Enfin, que se passera t-il avec des applications multi-tiers passant par le web ?



    C'était tellement facile avec FireBird 2.5.9 (on avait l'Heure de l'OS directement).
    Là, j'ai toujours un doute. Si vous voulez avoir toujours GMT+1 il vous suffit de modifier le firebird.conf sur le serveur en fonction ('+01:00') mais je me pose des questions sur les conséquences niveau client. C'est un peu comme la monnaie locale, j'ai eu affaire à ce problème avec un poste client configuré à l'anglaise alors que mes programmes étaient pour une entreprise française, ma réponse a tét de modifier les "program settings" de toutes les applications

    J'avoue n'avoir jamais fait attention à l'heure car resté en FB 2.5. La migration vers 4 ou 5 même si préparée en partie je l'ai laissé à mes successeurs mais, effectivement il y a beaucoup de TimeStamp !


    Voilà des choses qui méritent d'être creusées si je me sors de ma période "hibernation de retraité" .
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre du Club

    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 45
    Points
    45
    Par défaut
    Bonjour SergioMaster,

    Le problème est résolu. Merci

    Grâce à votre bon sens, j'ai dû rajouter dans les paramètres de mon logiciel un onglet intitulé : "Fuseaux Horaires"
    contenant un ComboBox : -12:00 ...+00:00.. +12:00 (qui n'apparait que côté Serveur).

    Ainsi, au lancement du soft, il applique, à la volée : Set Time Zone ValeurStockee
    Exemple pour ValeurStockee : '+01:00'

    Et donc, tous les PC "Client" (sous réseau local) verront la même date du Serveur (but recherché) avec la requête : Select Current_Time From RDB$DataBase
    Pour l'heure, je ne m'intéresse qu'aux réseaux locaux.
    Après, on verra pour les Appareils à l'international.

    NB : pour le passage à l'heure d'été / Hiver, on peut aisément le programmer en surveillant les dates :
    31 mars (Heure été) --> SET TIME '+02:00'
    29 Octobre (Heure Hiver) --> SET TIME '+01:00'


    Encore Merci
    Et... Bravo pour votre Parcours.

  6. #6
    Membre du Club

    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 45
    Points
    45
    Par défaut
    Bonjour à tous,

    L'énigme est entièrement résolue.

    Il ne faut pas se préoccuper du passage heure été / Hiver.
    Il suffit d'indiquer le bon fuseau horaire à son Serveur (windows ou autre) et FireBird fera le reste.

    Tout est stocké dans un fichier.
    both Windows and ICU has timezone transition database and update it

    Lire :
    https://groups.google.com/g/firebird.../c/JQO_3P_2PcA

    Salutations...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Time Zone client
    Par Regis0122 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/09/2009, 08h39
  2. Connexion MySql (Time Zone = null)
    Par mikadoweb dans le forum JDBC
    Réponses: 1
    Dernier message: 05/06/2008, 09h22
  3. VBA Outlook - connaître le fuseau horaire ? (time zone)
    Par flyjodel dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 16/01/2008, 15h11
  4. Time zone dans une date
    Par renotm dans le forum SQL
    Réponses: 1
    Dernier message: 08/12/2006, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo