Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 06/09/2004, 14h55   #1
Candidat au titre de Membre du Club
 
Homme Frédéric LOISEL
Inscription : juin 2003
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Frédéric LOISEL
Âge : 36

Informations forums :
Inscription : juin 2003
Messages : 21
Points : 10
Points : 10
Par défaut [DB2] Encore un pb de date dans une requête DB2-AS400

Je cherche a extraire les infos d'une table qui se trouve sur AS400. Ma requête doit extraire les infos depuis le debut du mois en cours.

Code :
1
2
3
4
5
6
7
 
HAVING DATE >=
INT (
   VARCHAR ( YEAR ( CURDATE ( ) ) ) ||
   SUBSTR ( DIGITS ( MONTH ( CURDATE ( ) ) ) , 9 , 2 ) ||
   SUBSTR ( DIGITS ( DAY ( CURDATE ( ) ) ) , 9 , 2 )
   )
Comment indiquer 01 à la place de
Code :
1
2
 
   SUBSTR ( DIGITS ( DAY ( CURDATE ( ) ) ) , 9 , 2 )
Merci d'avance
fdloisel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2004, 16h00   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Code :
1
2
HAVING month(date) = month(curdate())
AND year (date) = year(curdate())
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2004, 18h49   #3
Candidat au titre de Membre du Club
 
Homme Frédéric LOISEL
Inscription : juin 2003
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Frédéric LOISEL
Âge : 36

Informations forums :
Inscription : juin 2003
Messages : 21
Points : 10
Points : 10
Par défaut Pb toujours

J'ai essayé et j'ai une Erreur ADO month n'existe pas sur DB2 ......

Je vais donc précisé:
Je suis dans sql server 2000, et je veux extraire des données d'une table sous DB2-AS400. Le champ date sous as400 est un champ texte, ce qui doit expliquer l'erreur.
fdloisel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2004, 08h13   #4
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Par défaut Re: Pb toujours

Citation:
Envoyé par fdloisel
Le champ date sous as400 est un champ texte, ce qui doit expliquer l'erreur.
Quel format a ce champ ?

20040907 ?
040907 ?
070904 ?
07092004 ?
...

Avec une chaine de caractere, ca devrait s'écrire encore plus aisément en pure traitement de chaine et extraction/comparaison des données concernant le mois et l'année
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2004, 12h59   #5
Candidat au titre de Membre du Club
 
Homme Frédéric LOISEL
Inscription : juin 2003
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Frédéric LOISEL
Âge : 36

Informations forums :
Inscription : juin 2003
Messages : 21
Points : 10
Points : 10
Par défaut format du champ

20040907 , c'est le format de date sur as400

fdloisel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2004, 08h00   #6
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Code :
HAVING LEFT(date,6)=varchar(year(curdate()))||substr(digits(month(curdate())),9,2)
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2004, 10h47   #7
Candidat au titre de Membre du Club
 
Homme Frédéric LOISEL
Inscription : juin 2003
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Frédéric LOISEL
Âge : 36

Informations forums :
Inscription : juin 2003
Messages : 21
Points : 10
Points : 10
Par défaut re pb sur le left

lorsque je lance ma requête avec le code suivant
Code :
1
2
 
HAVING LEFT(date,6)=varchar(year(curdate()))||substr(digits(month(curdate())),9,2)
j'obtiens [IBM][Pilote ODBC iSeries Access][DB2]SQL0171 - L'argument 1 de la fonction Left est incorrect
fdloisel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2004, 23h59   #8
Invité régulier
 
Inscription : août 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 6
Points : 6
Points : 6
Bonsoir,

HAVING DATE >=
INT (
VARCHAR ( YEAR ( CURDATE ( ) ) ) ||
SUBSTR ( DIGITS ( MONTH ( CURDATE ( ) ) ) , 9 , 2 ) || '01'
)

devrait suffir !

sinon j'essaierai

HAVING DATE >=
INT (
VARCHAR ( YEAR ( CURDATE ( ) ) ) ||
SUBSTR ( DIGITS ( MONTH ( CURDATE ( ) ) ) , 9 , 2 ) ||
VARCHAR('01)'
)


@+
Dundee est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h38.


 
 
 
 
Partenaires

Hébergement Web