Page 1 sur 1

Convertion de date

Posté : 31 janv. 2008, 17:17
par Jeff2marseille
Bonjour,
j'ai passé la nuit à chercher la solution de partout mais je n'y suis pas arrivé alors je viens chercher de l'aide.

J'ai une table sql dans laquelle se trouve un champ datetime avec une date sous la forme yyyy-mm-dd H:i

J'utilise un calendrier php ou les jours et les mois sont sous la forme 1, 2 ,3 et pas 01, 02, 03

Je veux sélectionner dans la table sql les entrées correspondant à certaines date du calendrier, en regardant donc si la date de la table est la meme que celle du calendrier.

yyyy-mm-dd H:i doit donc etre égal à yyyy-m-d

J'ai checrhé du coté de la fonction DATE (pour sélectionner déjà que la date du datetime et pas l'heure, ça je pense que ça marche) et ensuite du coté de la fonction DATE_FORMAT pour convertir la date de la table au format de la date du calendrier php, lors de la requette. Mais rien que je tente ne marche, ça n'affiche rien, ça ne sort pas de la table les entrée voulues par rapport aux dates demandées.

Ma requette original est la suivante (la variable $u contient le jour):

Code : Tout sélectionner

$sql = "SELECT cle, datedebut FROM poste WHERE datedebut='$annee-$mois-$u' and datefin >= curdate() and cle in ( select distinct cleposte from inscription where nivol = '$authpseudo' and valide=1 )";
Quelques unes de mes tentatives ressemblent à ça :

Code : Tout sélectionner

$sql = "SELECT DATE(DATE_FORMAT(datedebut,'%Y-n-%w')) AS datedebut, cle FROM poste WHERE datedebut='$annee-$mois-$u' and datefin >= curdate() and cle in ( select distinct cleposte from inscription where nivol = '$authpseudo' and valide=1 )"; $sql = "SELECT cle, datedebut FROM poste WHERE DATE(DATE_FORMAT(datedebut,'%Y-n-%w'))='$annee-$mois-$u' and datefin >= curdate() and cle in ( select distinct cleposte from inscription where nivol = '$authpseudo' and valide=1 )";

La table poste :

Code : Tout sélectionner

CREATE TABLE `poste` ( `cle` bigint(20) unsigned NOT NULL auto_increment, `datedebut` datetime NOT NULL default '0000-00-00 00:00:00', `datefin` datetime NOT NULL default '0000-00-00 00:00:00', `lieu` longtext NOT NULL, `daterdv` datetime NOT NULL default '0000-00-00 00:00:00', `type` longtext NOT NULL, `commentaire` longtext NOT NULL, `complet` int(10) unsigned NOT NULL default '0', `nivol` varchar(12) NOT NULL default '', PRIMARY KEY (`cle`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=576 ;

Posté : 31 janv. 2008, 18:47
par Jeff2marseille
probleme résolu avec

Code : Tout sélectionner

$date = "$annee-$mois-$u"; // format aaaa-m-j list($aaaa, $m, $j) = explode('-', $date); $date = date('Y-m-d', mktime(0, 0, 0, $m, $j, $aaaa));
et

Code : Tout sélectionner

WHERE DATE(datedebut)='$date'

Posté : 31 janv. 2008, 19:26
par Hubert Roksor
En fait tu pourrais faire encore plus simple puisque MySQL est assez souple pour accepter ta date telle quelle. Par exemple, '2008-1-31' sera interprété comme '2008-01-31 00:00:00'.