Création de calendrier

Création de calendrier - SQL/NoSQL - Programmation

Marsh Posté le 17-07-2006 à 11:11:53    

Bonjour
 
Etant donné que personne n'a l'air de pouvoir m'aider sur le problème que j'ai posté il y a quelque jours, je vais simplifier ma demande :
 
Je veux juste créer une table contenant tous les mois (clé de type DATE contenant 01/mm/aaaa ) existant entre deux dates données date_debut et date_fin de type TIMESTAMP (SGBD = MySQL) . Et je ne vois pas trop comment faire
 
Voilà, j'imagine que c'est plus clair que ma demande précédente et que certains d'entre vous ont déjà été confrontés à ce besoin.
 
Merci pour tout


Message édité par 440LVB le 17-07-2006 à 11:17:41
Reply

Marsh Posté le 17-07-2006 à 11:11:53   

Reply

Marsh Posté le 17-07-2006 à 11:35:38    

c'est pas plus clair.
 
c'est simplement tout aussi impossible que l'autre demande, d'où l'absence de réponses sur ton autre topic.
 
c'est à toi de te palucher l'insertion de ces données, un sgbd c'est pas un agenda électronique.
 
soit tu fais un script pl, soit tu faire un script dans un langage de haut niveau, pour allimenter ta table, mais dans tous les cas tu ne pourra pas faire "tout seul"

Reply

Marsh Posté le 17-07-2006 à 11:51:17    

Arjuna a écrit :

c'est pas plus clair.
 
c'est simplement tout aussi impossible que l'autre demande, d'où l'absence de réponses sur ton autre topic.
 
c'est à toi de te palucher l'insertion de ces données, un sgbd c'est pas un agenda électronique.
 
soit tu fais un script pl, soit tu faire un script dans un langage de haut niveau, pour allimenter ta table, mais dans tous les cas tu ne pourra pas faire "tout seul"


 
J'imagine que ca se fait pas tout seul, mais y'a bien moyen de remplir simplement une table qui ne contient qu'une clé date en prenant  
LEAST(date-debut), puis en incrémentant d'un mois a chaque fois?
 
j'ai commencé a ecrire une fonction
 

Code :
  1. CREATE OR REPLACE FUNCTION (IN min_date TIMESTAMP, IN max_date TIMESTAMP)
  2. DECLARE
  3.     curr_date DATE := cast( YEAR(min_date) || '-' || MONTH(min_date) || '-01' AS DATE);
  4. BEGIN
  5.     WHILE (curr_date < max_date)
  6.         INSERT INTO calendrier VALUES (curr_date);
  7.         SET curr_date := PERIOD_ADD(curr_date,1);
  8.     END WHILE;
  9. END $$
  10. LANGUAGE 'plpgsql' IMMUTABLE;


ca se tient?

Reply

Marsh Posté le 17-07-2006 à 11:56:18    

ouais, ça se tiens, mais je maintiens que c'est pas au sgbd de faire ça

Reply

Marsh Posté le 17-07-2006 à 11:58:35    

Arjuna a écrit :

ouais, ça se tiens, mais je maintiens que c'est pas au sgbd de faire ça


 
Ah c'est sur que y'a rien d'optimisé, mais je dois faier ca dans un .sql, j'ai pas accès a un compilateur...
 
[edit]En considérant que je suis un vrai newbie, rien qui choque dans le code ci-dessus?


Message édité par 440LVB le 17-07-2006 à 12:00:00
Reply

Marsh Posté le 17-07-2006 à 11:59:39    

ben t'en fait quoi de ton calendrier après ?

Reply

Marsh Posté le 17-07-2006 à 12:02:26    

Arjuna a écrit :

ben t'en fait quoi de ton calendrier après ?


 
Je fais des comparaisons d'inclusion d'une periode par rapport a chaque mois, pour faire la somme des periodes uniquement inclues dans le mois.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed