[Résolu] Modifier le format de date dans une requête avec texte

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

[Résolu] Modifier le format de date dans une requête avec texte

Message par martinterrier »

Bonjour à tous!

J'utilise beaucoup les requêtes pour insérer du texte avec des variables dans mes rapports: problème, quand il s'agit de dates, le formatage AAAA-MM-JJ s'impose automatiquement et il ne peut être modifié "à la source" (le format de date enregistré sous la table n'est pas pris en compte). Cela ne me parait cependant pas surprenant puisque le champ est utilisé de manière brute dans la requête.

Ex: je cherche à obtenir via une requête (rédigée dans REQ_DATE, en PJ : 'Votre rendez-vous est prévu le ' || "DATE"):
Vous avez rendez-vous le 19/01/2020
et j'obtiens
Vous avez rendez-vous le 2020-01-19

J'ai donc cherché et il semble que DATE_FORMAT puisse répondre à ma question.

Soit une syntaxe SQL qui serait:
SELECT DATE_FORMAT("DATE", "Vous avez rendez-vous le: %d/%m/%Y") FROM "T_DATE"

Problème, je rencontre un message d'erreur ACCESS IS DENIED quand je tente d'insérer DATE_FORMAT (dans REQ_ERREUR_DENIED ouverte en SQL) :
Capture d’écran 2022-10-29 à 07.52.22.png
Je ne comprends pas mon erreur: ou cela veut-il dire que la fonction n'est pas supportée dans Base?

Je vous remercie et souhaite un bon début de weekend prolongé à ceux qui peuvent en bénéficier!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par martinterrier le 31 oct. 2022 06:02, modifié 1 fois.
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Modifier le format de date dans une requête avec texte

Message par pulcinopio »

Bien le bonjour,

Etes-vous sûr de ne pas pouvoir choisir le format de votre date au moment du traitement du champ DATE lorsque vous créez les éléments de la table en question?

Mon tuteur m'avait signalé que le format serait toujours modifiable même a posteriori, c'est à dire lorsque vous affichez le résultat de vontre requête...

Songez-y...
Libre Office 6.0.4 sur Ubuntu 18.04
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Modifier le format de date dans une requête avec texte

Message par martinterrier »

Bonjour Pulcinopio!

Oui, je vous confirme avoir bien connaissance des paramètres de format que ce soit dans la table lors de sa création, que dans les formulaires.

Aucune de ces deux options n'a d'effet au niveau d'une requête telle que je la décris!

Merci et bonne journée!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Modifier le format de date dans une requête avec texte

Message par pulcinopio »

Cher Monsieur,

Je crains que le script de votre requête empêche le choix du format a posteriori

Je vous prie de croire à l'expression de ma parfaite considération.

Slts
Libre Office 6.0.4 sur Ubuntu 18.04
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Modifier le format de date dans une requête avec texte

Message par pulcinopio »

pulcinopio a écrit : 29 oct. 2022 07:46 Cher Monsieur,

Je crains que le script de votre requête empêche le choix du format a posteriori

Je vous prie de croire à l'expression de ma parfaite considération.

Slts
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Modifier le format de date dans une requête avec texte

Message par martinterrier »

Merci Pulcinopio, mais ce n'est pas ce que je cherche : je cherche en effet l'intégration dans un seul "champ" de la requête pour ensuite l'utiliser dans un Rapport. La solution proposée consiste à laisser le champ date isolé, ce qui n'est pas a priori ce que je recherche.

Merci quand même, bon après-midi!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Modifier le format de date dans une requête avec texte

Message par Dude »

Salut,
martinterrier a écrit : 29 oct. 2022 06:03 Problème, je rencontre un message d'erreur ACCESS IS DENIED quand je tente d'insérer DATE_FORMAT
D'où sors-tu cette instruction ? :shock:
Relis le manuel HSQLDB et les fonctions Date / Heure du chapitre 9.
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Modifier le format de date dans une requête avec texte

Message par jeanmimi »

Bonjour Hugo,
La requête pour mettre les jours, les mois et les années dans notre format national peut être celle-ci :
Affichage de la date format France.jpg
 Ajout : Il est aussi possible d'afficher le nom des jours et des mois, en français.
DATE_v2.odb
 
 Ajout : Le code de l'instruction SQL :

Code : Tout sélectionner

SELECT 'Vous avez rendez-vous le' || ' ' || CASEWHEN( DAYNAME( "DATE" ) = 'Monday', 'Lundi', CASEWHEN( DAYNAME( "DATE" ) = 'Tuesday', 'Mardi', CASEWHEN( DAYNAME( "DATE" ) = 'Wednesday', 'Mercredi', CASEWHEN( DAYNAME( "DATE" ) = 'Thursday', 'Jeudi', CASEWHEN( DAYNAME( "DATE" ) = 'Friday', 'Vendredi', CASEWHEN( DAYNAME( "DATE" ) = 'Saturday', 'Samedi', CASEWHEN( DAYNAME( "DATE" ) = 'Sunday', 'Dimanche', '' ) ) ) ) ) ) ) || ' ' || EXTRACT( DAY FROM "DATE" ) || ' ' || CASEWHEN( MONTHNAME( "DATE" ) = 'January', 'Janvier', CASEWHEN( MONTHNAME( "DATE" ) = 'February', 'Février', CASEWHEN( MONTHNAME( "DATE" ) = 'March', 'Mars', CASEWHEN( MONTHNAME( "DATE" ) = 'April', 'Avril', CASEWHEN( MONTHNAME( "DATE" ) = 'May', 'Mai', CASEWHEN( MONTHNAME( "DATE" ) = 'June', 'Juin', CASEWHEN( MONTHNAME( "DATE" ) = 'July', 'Juillet', CASEWHEN( DAYNAME( "DATE" ) = 'August', 'Août', CASEWHEN( DAYNAME( "DATE" ) = 'September', 'Septembre', CASEWHEN( DAYNAME( "DATE" ) = 'October', 'Octobre', CASEWHEN( DAYNAME( "DATE" ) = 'November', 'Novembre', CASEWHEN( DAYNAME( "DATE" ) = 'December', 'Décembre', '' ) ) ) ) ) ) ) ) ) ) ) ) || ' ' || EXTRACT( YEAR FROM "DATE" ) AS "Date_RDV_pour_la_convocation_au_tribunal_ou_devant_OPJ" FROM "T_DATE"
 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par jeanmimi le 30 oct. 2022 14:25, modifié 1 fois.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Modifier le format de date dans une requête avec texte

Message par martinterrier »

Bonjour jean mimi!

Parfait, ça marche et ça remplit la fonction voulue! Merci pour les deux précisions - date format JJ/MM/AA et JJ mois en toutes lettres années, les deux vont m'être très utiles et je vais même pouvoir actualiser mes premières bases!

@ Dude : est-ce que le chemin du manuel HSQLB est le suivant :
https://www.hsqldb.org/doc/2.0/guide/bu ... functions

ou alors l'annexe de la documentation :
https://wiki.documentfoundation.org/ima ... ice_B.pdf

Je ne retrouve en effet pas le chapitre 9 que tu évoques.

 Ajout : J'ai mal cherché! Voici le lien vers le chapitre 9 :
https://wiki.openoffice.org/wiki/FR/Doc ... te.2FHeure 

J'ai pour ma part trouvé la fonction DATE_FORMAT sur:
https://sql.sh/fonctions/date_format


Reste donc pour moi une question : que signifie le message "Access is denied" : cela veut-il dire que le moteur SQL reconnait la commande, mais que celle-ci, n'étant pas "implémentée" dans le moteur, elle ne peut l'exécuter? Ce n'est en effet pas le message "traditionnel" d'erreur lors qu'une commande est mal rédigée. Pour ma culture, y a-t-il par ailleurs quelque part un texte qui explique les spécificités du moteur de BASE (HSQLBD, donc), ses éventuelles limites et les raisons de ces limites?

Merci et bon dimanche!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Modifier le format de date dans une requête avec texte

Message par Dude »

martinterrier a écrit : 30 oct. 2022 06:28 est-ce que le chemin du manuel HSQLB est le suivant
Pas la peine de mettre des liens externes. Toute la documentation est accessible depuis le forum.
Les informations importantes sont même épinglées en tête de section :
a_lire_d_urgence.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Modifier le format de date dans une requête avec texte

Message par pulcinopio »

Messieurs bonjour et bon dimanche,

Le traitement des segments DATE se tient (on me l'a déjà dit en classe) à des critères de sécurité. J'aimerais de ce faite être extrèmement reconnaissant à M. Dude, qiui connaît son affaire "au doigt et à l'oeil".

Je vous prie donc de ne pas insister, car on risque de traumatiser quelques esprits simples.

Bien à vous

Pulcinopio :shock:
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Modifier le format de date dans une requête avec texte

Message par jeanmimi »

martinterrier a écrit : 30 oct. 2022 06:28 le moteur SQL reconnait la commande, mais que celle-ci, n'étant pas "implémentée" dans le moteur, elle ne peut l'exécuter ?
Le choix a été fait de laisser Base avec sa version HSQLDB actuelle et de développer l'implémentation d'un nouveau moteur Firebird en cours. Les nombreux bogues initiaux de l'implantation de Firebird ont pu décourager ses utilisateurs.

Pense aussi à baliser Résolu le titre de ton premier message de ce fil de discussion.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Modifier le format de date dans une requête avec texte

Message par martinterrier »

Merci jeanmimi pour ces précisions, qui répondent à mes questions!

Bonne journée à tous!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 744
Inscription : 20 déc. 2017 14:45

Re: Modifier le format de date dans une requête avec texte

Message par rollmops »

Bonjour,
martinterrier a écrit : 30 oct. 2022 06:28 J'ai pour ma part trouvé la fonction DATE_FORMAT sur:
https://sql.sh/fonctions/date_format
:roll: Que dit cette page ?
Forcément MySQL doit être utilisé comme moteur si tu veux cette commande.
2022-10-31 07_55_51-SQL DATE_FORMAT() - SQL.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.16 - Windows 11
+ LibO 25.8.5 (occasionnel pour test)
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: [Résolu] Modifier le format de date dans une requête avec texte

Message par martinterrier »

Bonjour rollmops,

Je reconnais volontiers mon inattention, que j'explique benoitement par l'usage répété de ce site SQL.SH à de nombreuses reprises dans l'année écoulée, pour les requêtes de ma Base, sans difficultés.

Mais je sais maintenant que je me référerais seulement à la doc LibreOffice de ce forum!

Merci et bonne journée!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10