j'essaie de trier les données sur une base entre 2 dates.
la date est de la forme :
"Jul 4 2006 7:30PM",
comment faire ?
j'essaie de trier les données sur une base entre 2 dates.
la date est de la forme :
"Jul 4 2006 7:30PM",
comment faire ?
Convertir en timestamp et comparer ?
Merci si tu peux m en dire plus, en fait sur le code ci dessous,(requete SQL) c est le champs "QcreatedOn" qui est une date au format indique plus haut.
ps: c'est une base (sql)--> commande = mssql_connect
et donc je veux creer une requete sql qui affiche les valeur entre 2 date.
merci de ton aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <?php //connection au serveur $c=mssql_connect('10.888.525.55','oi','gpoioiu'); $d=mssql_select_db('GPS_LILLE'); $req = "select QId,QCustomerContactId,QCreatedOn,TInChargeDisplayName,TProductDescription,TQuestion1,TQuestion2 from vBLLoggedInquiry2 where T2Field5='F:-1' ORDER BY QId DESC"; $res = mssql_query($req); echo '<table width=100% cellpading=0 cellspacing=0 border=1>'; echo'<tr> <td>QId</td> <td>QCustomerContactId</td> <td>QCreatedOn</td> <td>TInChargeDisplayName</td> <td>TProductDescription</td> <td>TQuestion1</td> </tr>'; while ($row = mssql_fetch_row($res)) { echo '<tr>'; echo '<td>'.$row[0].'</td>'; echo '<td>'.$row[1].'</td>'; echo '<td>'.$row[2].'</td>'; echo '<td>'.$row[3].'</td>'; echo '<td>'.$row[4].'</td>'; echo '<td>'.$row[5].'</td>'; echo '</tr>'; } echo '</table>'; ?>
Partant de ce postulat "Jul 4 2006 7:30PM"
A partir de là tu peux appliquer plein de fonctions sympa sur les dates avec ton timestamp ainsi créé du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $tab_month = array('Jan' => 01, 'Feb'=>02, etc etc); $tmp = "Jul 4 2006 7:30PM"; list($m,$d,$a) = explode(' ', $tmp); $m = $tab_mont[$m]; $mon_timestamp = mktime( 0, 0, 0, $m, $d, $a );
Note que dans ma fonction je recrée le timestamp mais bon c'est parceque mes params de la fonction ne sont pas des timestamp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 /************* CALCUL DUREE $d_fin-$d_deb = ? *************/ /** * Calcule la durée entre 2 dates en jours * @param $d_deb Date début * @param $d_fin Date fin * @return La durée entre les 2 dates, sinon 0 si $d_fin < $d_deb */ function calcul_duree($d_deb, $d_fin) { list($d,$m,$a) = explode('/',$d_deb); $deb = mktime( 0, 0, 0, $m, $d, $a ); list($d,$m,$a) = explode('/',$d_fin); $fin = mktime( 0, 0, 0, $m, $d, $a ); $d = ceil(($fin - $deb) / (3600 * 24)); if ($d <0) return 0; else return $d; }
J'ai pas compris.Envoyé par udta5371
Et un truc dans ce style là (retourne le timestamp de la date) ?
C'est non testé, et les [0-9]*? sont a remplacé par un truc qui limite le masque a 2 chiffres (je sais plus comment on fait, je debute en preg).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function DoTime($min, $hr, $month, $day, $year) { $tab_mois = array("Jan" => 1, "Feb" => 2, etc...)// return mktime(0, $min, $hr, $tab_mois[$month], $day, $year); } $chaine = "Jul 4 2006 7:30PM"; preg_replace("#(Jan|Feb|Mar|etc...) ([0-9]*?) ([0-9]*4) ([0-9]*?):([0-9]*?)PM#is", $chaine, DoTime('\\1', '\\2', '\\3', '\\4', '\\5', '\\6'));
Avec àa, tu obtient un timestamp, donc rien de plus facile a trier !
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager