Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2007, 11h34   #1
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Par défaut Formatage date et heure

Bonjour,
j'accede à une base de donnée Oracle où chaque colonne est de type String.
Pour une requete sur la date, j'emplois ceci sachant que le champ "DATES" est de type String:

Code :
1
2
 
((TO_DATE(DATES,'DD/MM/YYYY') = (TO_DATE('13/12/2007','DD/MM/YYYY')))
Cette requete fonctionne.

Là où j'ai un problème, c'est avec le champ "SORTIE" qui est aussi de type String et où les données sont écrite de la façon suivante "08H45".
J'ai essayé cette requete:

Code :
1
2
 
(TO_DATE(SORTIE,'HH24"H"MI') > (TO_DATE('08H00','HH24"H"MI'))))
mais ça ne fonctionne pas

Help !!!
André
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 11h55   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
peut-être :

Code :
to_date(REPLACE('08H00','H',':'),'HH24:MI')
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 12h26   #3
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Merci pour la réponse et l'aide.
J'ai mit ceci:
Code :
1
2
3
4
5
6
SELECT *
FROM "Table1"
WHERE 
((TO_DATE(DATES,'DD/MM/YYYY') = (TO_DATE('13/12/2007','DD/MM/YYYY'))) AND
(to_date(REPLACE(SORTIE,'H',':'),'HH24:MI') > (to_date(REPLACE('08H00','H',':'),'HH24:MI'))))
ORDER BY NR100
Mais ça ne fonctionne pas.
J'ai comme message d'erreur:
Citation:
ORA-01858: a non-numeric character was found where a numeric was expected
André
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 13h27   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Code :
1
2
3
4
SELECT TO_DATE('08H24','HH24"H"MI') 
FROM dual
 
01/12/2007 08:24:00
Ton problème doit être autre :
Fait un select de tes champs SORTIES ou DATES

Pour sortie :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT 	LENGTH(sortie) taille,
		LENGTH(LTRIM(sortie, '0123456789')) taille_d, 
		LENGTH(RTRIM(sortie, '0123456789')) taille_g,
		susbtr(sortie, 3,1) carac_milieu, 
		COUNT(*) nb
FROM table1
GROUP BY LENGTH(sortie),
		LENGTH(LTRIM(sortie, '0123456789')), 
		LENGTH(RTRIM(sortie, '0123456789')),
		susbtr(sortie, 3,1)
Devrait te ressortir 1 seule ligne
Taille 5, taille_d 3, taille_g 3, carac_milieu 'H'
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 14h00   #5
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Encore merci,
en réponse à la derniere requete postée par McM, j'ai 2 lignes:
La premiere m'indique que de temps en temps la valeur du champ "SORTIE" est NULL.
La deuxieme correspond à nos attentes.

C'est un indice !?!?
André
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 14h06   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Poste le résultat, on sera sur que c'est pas ça to_date(NULL) marche (renvoit null).

L'autre souci, c'est une date incohérente.
Je te prépare un select
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 14h11   #7
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Essaye ça pour voir le format des dates
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT 	LENGTH(dates) taille,
		LENGTH(LTRIM(dates, '0123456789')) taille_sans_dd, 
		LENGTH(RTRIM(sortie, '0123456789')) taille_sans_yyyy,
		LENGTH(LTRIM(SUBSTR(dates, 4,2),'0123456789')) NULL_si_mm_num,
		SUBSTR(dates, 3,1) || SUBSTR(dates, 6,1) carac_sep,
		COUNT(*) nb
FROM table1
GROUP BY LENGTH(dates),
		LENGTH(LTRIM(dates, '0123456789')),
		LENGTH(RTRIM(sortie, '0123456789')),
		LENGTH(LTRIM(SUBSTR(dates, 4,2),'0123456789')),
		SUBSTR(dates, 3,1) || SUBSTR(dates, 6,1)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 14h18   #8
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Voici la réponse en fichier joint.

André
Images attachées
Type de fichier : jpg ScreenShot001.jpg (46,4 Ko, 4 affichages)
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 14h37   #9
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Je viens d'éplucher le champ "SORTIE" et il n'est jamais NULL.
Soit j'ai une heure indiquée au format 00H00
soit j'ai juste H.

André
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 15h05   #10
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
C'est sur que si tu as juste H ça marchera pas.
Fais un LTRIM(sorties, 'H')

Pour tes dates, on verra. (mais c'est plus simple si tu nous colles les données qu'on puisse faire un copier-coller.)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 16h05   #11
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Bon ben apres cet essai (voire fichier joint) je me rend compte que le REPLACE fonctionne.
Mais je n'arrive pas à faire une condition "si > que 08H00.

André
Images attachées
Type de fichier : jpg ScreenShot002.jpg (100,5 Ko, 3 affichages)
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 16h21   #12
Membre éprouvé
 
Homme André
Directeur de projet
Inscription : février 2006
Messages : 512
Détails du profil
Informations personnelles :
Nom : Homme André
Âge : 44
Localisation : Belgique

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 512
Points : 419
Points : 419
Bon voila, j'ai trouvé
Je vous remercie tous pour votre aide

Voici ce qui fonctionne:
Code :
1
2
3
4
5
SELECT NR, DATES, REPLACE(SORTIE,'H',':')
FROM "Table1"
WHERE ((TO_DATE(DATES,'DD/MM/YYYY') = (TO_DATE('14/12/2007','DD/MM/YYYY')))) AND
(REPLACE(SORTIE,'H',':') > '08:00')
ORDER BY NR100
André
andreditdd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 16h23   #13
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Le replace ne va rien résoudre, si tu as un champ avec seulement 'H', la transformation en date plantera.


Edit : Tu as résolu de manière encore plus simple. Nickel !
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web