Doctrine : comparer 2 date
btm
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je travaille sur un projet symfony 2 et je veut compter le nombre d'employée qui ont date fin essai aprés moin d'un mois
Voila je rencontre un petit problème avec mon code.
et le nombre que j'obtient n'est pas correct
je ne sais pas pourquoi ça ne marche pas correctement !!!!
merci pour votre aide :)
je travaille sur un projet symfony 2 et je veut compter le nombre d'employée qui ont date fin essai aprés moin d'un mois
Voila je rencontre un petit problème avec mon code.
$Essai1_numberC = $this->container->get('doctrine')->getManager('Mysql')->getRepository('monprojetBundle:employee') ->createQueryBuilder('r') ->where('DATE_DIFF( r.DateFinEssai , CURRENT_DATE()) < 32 AND r.DateFinEssai IS NOT NULL AND r.EnEssai = 1 ') ->getQuery() ->getResult(); $Essai1_number = count($Essai1_numberC) ;
et le nombre que j'obtient n'est pas correct
je ne sais pas pourquoi ça ne marche pas correctement !!!!
merci pour votre aide :)
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Doctrine compare date
- Beyond compare - Télécharger - Gestion de fichiers
- Airpods 3 date de sortie - Guide
- Jm date désabonnement - Forum Gmail
- Publipostage date inversée - Forum Word
- Trier par date excel - Guide
2 réponses
Bonjour,
As tu testé ta requête DIRECTEMENT dans ta BDD (c'est à dire... sans passer par php mais via phpmyadmin par exemple ) ??
As tu essayé quelque chose du genre :
Cordialement,
Jordane
As tu testé ta requête DIRECTEMENT dans ta BDD (c'est à dire... sans passer par php mais via phpmyadmin par exemple ) ??
As tu essayé quelque chose du genre :
SELECT count(*) as NB FROM tatable r WHERE r.DateFinEssai > NOW() - INTERVAL 1 MONTH
Cordialement,
Jordane
bonjour
j'ai essayé avec la solution de jordane45 mais ça na pas marché
y'a il une moyen pour convertir r.DateFinEssai de table employee de chaine de caractère en date ??
merci tout le monde .
j'ai essayé avec la solution de jordane45 mais ça na pas marché
y'a il une moyen pour convertir r.DateFinEssai de table employee de chaine de caractère en date ??
merci tout le monde .
j'ai essayé de convertir r.DateFinEssai
-> where('DATE_DIFF(date_format(str_to_date( r.DateFinEssai , "%d/%m/%Y"), "%Y-%m-%d"), CURRENT_DATE()) < 32 AND r.DateFinEssai IS NOT NULL AND r.EnEssai = 1 ')
et méme :
-> where('DATE_DIFF( str_to_date( r.DateFinEssai , "%d/%m/%Y") , CURRENT_DATE()) < 32 AND r.DateFinEssai IS NOT NULL AND r.EnEssai = 1 ')
est ce que c'est pas correct comme ça ??
-> where('DATE_DIFF(date_format(str_to_date( r.DateFinEssai , "%d/%m/%Y"), "%Y-%m-%d"), CURRENT_DATE()) < 32 AND r.DateFinEssai IS NOT NULL AND r.EnEssai = 1 ')
et méme :
-> where('DATE_DIFF( str_to_date( r.DateFinEssai , "%d/%m/%Y") , CURRENT_DATE()) < 32 AND r.DateFinEssai IS NOT NULL AND r.EnEssai = 1 ')
est ce que c'est pas correct comme ça ??
...mais... dis moi.... as tu testé
Ca ne sert à rien d'écrire des requêtes dans ton code PHP si tu n'as pas pris la peine de les essayer directement dans ta BDD (en passant par phpMyadmin par exemple).
Sinon... comment savoir si la requête fonctionne ????
Par exemple, commence par faire :
et regardes si DATE_EN donne le résultat attendu. (c'est à dire.. le "bon" format de date )
Idemn pour D_DIFF ... la différence est-elle bonne ??
==>> je t'invite à nous poster sur le forum le résultat de cette requête !
DIRECTEMENT
dans ta BDD au moins ??????Ca ne sert à rien d'écrire des requêtes dans ton code PHP si tu n'as pas pris la peine de les essayer directement dans ta BDD (en passant par phpMyadmin par exemple).
Sinon... comment savoir si la requête fonctionne ????
Par exemple, commence par faire :
SELECT r.DateFinEssai ,date_format(str_to_date( r.DateFinEssai , "%d/%m/%Y"), "%Y-%m-%d") as DATE_EN ,DATE_DIFF(date_format(str_to_date( r.DateFinEssai , "%d/%m/%Y"), "%Y-%m-%d"), CURRENT_DATE()) as D_DIFF FROM tatable WHERE r.DateFinEssai IS NOT NULL LIMIT 100
et regardes si DATE_EN donne le résultat attendu. (c'est à dire.. le "bon" format de date )
Idemn pour D_DIFF ... la différence est-elle bonne ??
==>> je t'invite à nous poster sur le forum le résultat de cette requête !
lorsque j'ai essayée directement dans lla base , il y'a une erreur lors de l'utilisation de DATE_DIFF ( fonction non définie ) alors j'ai essaye avec la requête :
SELECT 'DateFinEssai',date_format(str_to_date( 'DateFinEssai' , "%d/%m/%Y"), "%Y-%m-%d") as DATE_EN FROM employee WHERE 'DateFinEssai' IS NOT NULL LIMIT 100
la résultat est le tableau suivant :
DateFinEssai DATE_EN
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
malgré que le contenus du colonne DateFinEssai est
DateFinEssai
NULL
NULL
22/02/2016
09/02/2016
20/04/2016
23/04/2016
NULL
SELECT 'DateFinEssai',date_format(str_to_date( 'DateFinEssai' , "%d/%m/%Y"), "%Y-%m-%d") as DATE_EN FROM employee WHERE 'DateFinEssai' IS NOT NULL LIMIT 100
la résultat est le tableau suivant :
DateFinEssai DATE_EN
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
DateFinEssai NULL
malgré que le contenus du colonne DateFinEssai est
DateFinEssai
NULL
NULL
22/02/2016
09/02/2016
20/04/2016
23/04/2016
NULL
.... Où as tu vu... dans MA requête ... qu'il y a des QUOTES autour de nom du champ DateFinEssai ?
Peux tu essayer ceci :
NB : **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Peux tu essayer ceci :
SELECT DateFinEssai ,date_format(str_to_date( DateFinEssai , "%d/%m/%Y"), "%Y-%m-%d") as DATE_EN FROM employee WHERE DateFinEssai IS NOT NULL LIMIT 100
NB : **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
j'ai tester cette requête directement dans phpMyadmin et ça donne 0
malgré que j'ai un employée dont la datefinessai est "22/02/2016"
Ce n'est pas du varchar j'espère. ....
Commence par corriger ça.
mais il y'a des moyen pour convertir une chaine de caractère en date
as tu une idée sur ??