convert datetime format to datetime format

convert datetime format to datetime format - SQL/NoSQL - Programmation

Marsh Posté le 04-01-2005 à 17:59:30    

Bonjour,
 
Ma configuration base de donnée est: Sybase 11.9
Je desire transformer un format de datetime yyyymmddhh24miss vers un format yyyymmdd lors d'un insert sur un resultat de select.
 
La solution la plus barbare que j'ai trouver est:
 
CALL_DATE = DATETIME
MY_DATE = DATETIME
 
INSERT (......, MY_DATE, .....) VALUES
SELECT ......,
CONVERT(DATETIME,CONVERT(VARCHAR(12), CALL_DATE, 112),112) MY_DATE, ....
FROM ....
WHERE ....
 
En gros je passe par une convertion de type charactere pour supprimer la partie heures minutes secondes.
 
Si quelqu'un connait une methode plus propre merci de me la communiquer.

Reply

Marsh Posté le 04-01-2005 à 17:59:30   

Reply

Marsh Posté le 04-01-2005 à 21:20:44    

y'a pas de solution plus propre.
 
si tu veux stocker des bouts de date, c'est plus des dates, donc stocke ça dans des char(8)


Message édité par Arjuna le 04-01-2005 à 21:20:56
Reply

Marsh Posté le 05-01-2005 à 09:34:23    

Arjuna a écrit :

y'a pas de solution plus propre.
 
si tu veux stocker des bouts de date, c'est plus des dates, donc stocke ça dans des char(8)


 
Disons que se qui m'embete le plus c'est surtout cette partie de ma requete:
 
INSERT (...,NBR,.., MY_DATE, .....) VALUES
SELECT ......,COUNT(1) NBR,...,
CONVERT(DATETIME,CONVERT(VARCHAR(12), CALL_DATE, 112),112) MY_DATE, ....
FROM ....
WHERE ....  
GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR(12), CALL_DATE, 112),112)

Reply

Marsh Posté le 05-01-2005 à 09:45:51    

C'est quoi ce NBR ?
 
Tu peux détailler un peu plus ce que fait ton truc ?
 
Sinon, dans ton SGBD, y'a pas un type "shortdate" ou "smalldate", un truc comme ça ? Généralement, ça permet de ne stocker que la partie date d'un datetime.

Reply

Marsh Posté le 05-01-2005 à 10:33:42    

Arjuna a écrit :

C'est quoi ce NBR ?
 
Tu peux détailler un peu plus ce que fait ton truc ?
 
Sinon, dans ton SGBD, y'a pas un type "shortdate" ou "smalldate", un truc comme ça ? Généralement, ça permet de ne stocker que la partie date d'un datetime.


 
Disons que ma requête en question permet de faire des stat (un résumer du contenue d'une autre table) sur une journée.
Donc pour être simple:
J'insère dans une table summary, le nombre de données reçues classées par type de donnée et par date de réception (JJ/MM/ANNEE) trouvée dans une table correspondant au trafic du jour.
 
Exemple:
TABLE TRAFIC(
data_date datetime, /* Format YYYY MM DD HH24:MI:SS */
data varchar(x),
data_type varchar(x),
...
)
 
TABLE SUMMARY(
trafic_date datetime, /* Format YYYY MM DD*/
nbr numeric (8,0), /* = count(data) pour la journée en question */
data_type varchar(x),
...
)
 
Donc ma requête serait:
 
INSERT INTO SUMMARY (trafic_date, nbr, data_type) VALUES
SELECT CONVERT(DATETIME,CONVERT(VARCHAR(12), data_date, 112),112) trafic_date, count(data) nbr, data_type
FROM TRAFIC
WHERE data_date >= @date_deb and data_date < @date_end
GROUP BY
CONVERT(DATETIME,CONVERT(VARCHAR(12), data_date, 112),112),
data_type

 
 
Une fois que mon résumer est inséré je supprime le contenu de la table trafic.
A savoir que je suis obliger de garder le type date dans la table summary pour pouvoir faire des recherches dessus après sans utiliser du like si cela était un varchar(8).
 
Merci.

Reply

Marsh Posté le 05-01-2005 à 10:58:39    

Hmmm, à vue de nez, je ne vois pas de solution vraiment miraculeuse.
 
Ta table Traffic est vidée au fur et à mesure. A part alimenter la table Summary, elle sert à autrechose ? Sinon, un bon moyen serait de ne stocker dans cette table que la partie date de ton datetime.
 
Sinon, a nouveau, puisqu'à priori tu vide ta table Traffic au fur et à mesure, pourquoi ne pas faire un update de la table Traffic et mettre à jour la date au format voulu ? Ca permettra de ne pas faire de regroupement sur un calcul.
 
Je ne suis pas certain que ça change grand chose d'un point de vue rapidité par contre.

Reply

Marsh Posté le 05-01-2005 à 11:04:31    

La table trafic est remplis au fil de l’eau, lors du traitement des données (par un premier programme) et permet en cas de soucis principalement de contrôler les données.  
Tandis que la table résumer permet de faire des stats (par l'intermédiaire d'un deuxième programme indépendant du premier).
 
Merci  pour ton aide.

Reply

Sujets relatifs:

Leave a Replay

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