[Base] liste des fonctions

Bonjour,

Patrice recherche une liste de fonctions pour son code et moi, je recherche bêtement la liste des fonctions
utilisables dans Base !
Je viens de lire toute la Faq en français (fort intéressante), et j'ai beau mettre les combinaisons de mots clés dans l'aide, rien n'y fait :frowning:

Je recherche en fait l'équivalent de la fonction DATE() du tableur. Et d'une manière générale à manipuler des dates.
Le besoin précis est : j'ai une date donnée Exemple : 15/04/2011 et au 1er janvier, je souhaite ajouter un an à toutes mes dates. ---> 15/04/2012
Merci de vos lumières.

Marie-Jo

Bonjour Marie-Jo

Marie-Jo Kopp Castinel wrote:

j'ai une date donnée Exemple : 15/04/2011 et au 1er janvier, je souhaite
ajouter un an à toutes mes dates. ---> 15/04/2012

Je suis en déplacement avec des connexions limitées et je ne peux donc
répondre par un exemple "sur mesure" et pour LibO.

J'avais fait un post sur cette question ici :
http://user.services.openoffice.org/fr/forum/viewtopic.php?f=9&t=1543#p81847

Nota : je ne peux tester sur LibO et ne peux garantir que tout ce qui est
indiqué est toujours d'actualité (cf. par exemple mon ajout du 20/03/2010
sur java). Concernant le formatage je peux au moins t'indiquer la fonction
TO_CHAR mise en œuvre ici :
http://wiki.documentfoundation.org/FR/FAQ/Base/120

Cordialement
Pierre-Yves

Bonjour,

Je suis sur ce forum depuis quelques semaines seulement et j'ai appris énormément. C'est donc en toute modestie que je vous propose ceci : il suffit d'ajouter 365 à toutes vos dates. Un contrôle rapide vous permettra de voir si vous n’êtes pas dans une année bissextile, auquel cas il ne faut pas ajouter 365, mais bien 366.

En annexe, un exemple.

Cordialement,

Henri De Backer

Merci Pierre-Yves !!
Il me manquait juste le CONVERT :wink:
Génial !

Marie jo

Bonjour Henri,

Bonjour,

Je suis sur ce forum depuis quelques semaines seulement et j'ai appris énormément. C'est donc en toute modestie que je vous propose ceci : il suffit d'ajouter 365 à toutes vos dates. Un contrôle rapide vous permettra de voir si vous n’êtes pas dans une année bissextile, auquel cas il ne faut pas ajouter 365, mais bien 366.

En annexe, un exemple.

Les annexes ne passent pas !
Et j'ai commencé par tester cette solution simple mais il n'en voulait pas :frowning:
Les liens fournis par pierre-Yves précisent bien que les exemple de fonctionnent plus depuis la version 3.2
Ce que je confirme. Ni la fonction CAST, ni la fonction CONVERT ne marchent.
Et que nous attendons la toute simple fonction DATEADD qui ne semble pas encore implémentée.
Si vous pouvez faire une copie de l'exemple ou me l'envoyer en privé ou sur ci-joint
merci d'avance

Marie jo

Re bonjour,

Bonjour,

Je suis sur ce forum depuis quelques semaines seulement et j'ai appris énormément. C'est donc en toute modestie que je vous propose ceci : il suffit d'ajouter 365 à toutes vos dates. Un contrôle rapide vous permettra de voir si vous n’êtes pas dans une année bissextile, auquel cas il ne faut pas ajouter 365, mais bien 366.

Henri pensait qu'il s'agissait de Calc. Merci à lui pour sa réponse en privé.
Ma question est la suivante : comment additionner simplement 365 à un champ date dans Base (dans une requête) sans se faire insulter.
Depuis 9h ce matin, je sature.
Merci de votre aide sur quelque chose qui paraît si basique pourtant.

Marie-Jo

Marie-Jo KOPP CASTINEL
http://www.opengo.fr

Soutenez la bureautique libre
http://www.lamouette.org

Ma question est la suivante : comment additionner simplement 365 à un champ date dans Base (dans une requête) sans se faire insulter.
Depuis 9h ce matin, je sature.
Merci de votre aide sur quelque chose qui paraît si basique pourtant.

Marie-Jo

Marie-Jo KOPP CASTINEL
http://www.opengo.fr

Soutenez la bureautique libre
http://www.lamouette.org

Bonjour,

Si "DateInitiale" est le nom du champ de la table "Table" où les dates ont été entrées, une requête comme celle-ci ajoute une année :

SELECT "DateInitiale", YEAR( "DateInitiale" ), YEAR( "DateInitiale" ) + 1 AS "Date initiale+1" FROM "Table" AS "Table"

Tu peux aussi joindre ta base pour tester.

J.M

Re-bonjour

Marie-Jo wrote:

Ma question est la suivante : comment additionner simplement 365 à un
champ date dans Base (dans une requête) sans se faire insulter.

J'ai pu me débrouiller pour au moins tester sur OOo 3.3.0 .

Le SQL suivant fonctionne mais, utilisé dans une requête, le formatage de
la colonne résultat au format date n'est pas conservé.

En revanche... il l'est si on crée une vue avec ce SQL.

Donc en résumé :
1. Créer une vue avec le code ci-dessous, enregistrer, fermer la vue.
2. Ouvrir (exécuter) la vue : la colonne apparaît en nombre, clic droit sur
l'en-tête pour formater en date

Le format est mémorisé.

Ceci fonctionne avec OOo

SELECT "IdTable", "Date", "NbJours", DATEDIFF( 'DD', '1900-01-01', "Date" )
+ IFNULL( "NbJours", 0 ) AS "Date+NbJours" FROM "Table"

Explications :
- On calcule le nombre de jours entre la date "origine" et le champ date.
- On ajoute à ce nombre le nombre souhaité
- Pour éviter la "propagation du null" on utilise IFNULL
cf. http://wiki.documentfoundation.org/FR/FAQ/Base/125

Le résultat est donc un nombre de jours (depuis la date origine). On
convertit au format date par clic sur l'en-tête de colonne (en mode
"exécution", pas depuis le mode "conception").

http://nabble.documentfoundation.org/file/n3219344/AjoutDateVue.odb
AjoutDateVue.odb

Cordialement
Pierre-Yves

Bonjour Marie Jo, Pierre-Yves, Jean-Michel

Par curiosité je me suis rendu sur la FAQ sur le IFNULL pour voir comment y était présenté le concept de NULL , concept ô combien particulier.

Je ferai juste une petite remarque sur cette FAQ. Comme souvent à propos de NULL on parle de champ vide mais un puriste de SQL dirait qu'un champ contenant NULL n'est pas un champ vide mais un champ qui contient une *valeur indéterminée* et pour être encore plus précis encore : NULL est un *état *indiquant que la valeur d'un champ est indéterminée.

En plus, Base entretient la confusion en utilisant IS EMPTY dans les formulaires pour ce qui est codé IS NULL en SQL.

Je sais, je chipote... :slight_smile:

Allez, bonne journée à tous,
Bernard

Bonjour Marie Jo,

Est-ce cela que tu cherches : http://hsqldb.org/doc/guide/ch09.html#N1251E ?

Bernard

Bonjour Bernard

Bernard Ribot wrote:

Je ferai juste une petite remarque sur cette FAQ. Comme souvent à propos
de NULL on parle de champ vide mais un puriste de SQL dirait qu'un champ
contenant NULL n'est pas un champ vide mais un champ qui contient une
*valeur indéterminée*

Et bien... pour dire la vérité c'est volontaire :slight_smile:

Il s'agit en effet d'une FAQ et le "vide" en question est issu d'une
Q(uestion) fréquente et donc d'un critère de *recherche*.

En revanche j'ai bien insisté sur les types "indéterminés" en fin de FAQ

Cordialement
Pierre-Yves

Bonjour Pierre-Yves,

Soit. Quelquefois le puriste doit s'effacer devant le pragmatique. :slight_smile:

Cordialement,
Bernard

Marie-Jo,
Avec Access (désolé ...:-[ ) on peut faire cela avec une requête de mise à jour et la fonction DateAdd, ce qui donne ce code SQL
UPDATE Ma_Table SET Ma_Table.Ma_DATE = DateAdd("yyyy",1,[Ma_DATE]);
je ne sais pas faire dans Base ....

Claude

Merci Jean-Pierre et Pierre-Yves,

Je vais tester vos solutions la semaine prochaine.
Marie jo

Bonjour Bernard,

je recherche bêtement la liste des fonctions
utilisables dans Base !

Bonjour Marie Jo,

Est-ce cela que tu cherches : http://hsqldb.org/doc/guide/ch09.html#N1251E ?

Oui, en tout cas, cela y ressemble :wink:
Merci !
La liste est pas bien longue

Marie jo

Bonjour Claude,

Marie-Jo,
Avec Access (désolé ...:-[ ) on peut faire cela avec une requête de mise à jour et la fonction DateAdd, ce qui donne ce code SQL
UPDATE Ma_Table SET Ma_Table.Ma_DATE = DateAdd("yyyy",1,[Ma_DATE]);
je ne sais pas faire dans Base ....

Et oui, je sais aussi cela. 15 ans de développement sous access... Et la faq ( de Pierre-Yves il me semble) précise bien que nous attendons la fonction DateADD ...
Tout vient à point qui sait attendre :wink:
Merci

Marie-Jo