Page 1 sur 1

Soustraction entre deux dates...

Posté : 06 janv. 2007, 17:05
par undesignable
Bonjour,

Je suis nouveau, ne suis pas developpeur, mais essaye de toruver des solutions pour mon site.

Je voudrais pourvoir trouver la nombre de jours entre deux dates.
Date 1 = date de depart
DAte 2 = date de fin

Jai fais ca :
-----------------------
$Ar = $data_de_la_table['DateDeLarrive'];

$dp = $data_de_la_table['DateDuDepart'];

$sql1 = "SELECT DAYOFMONTH('$Ar')";
$req1 = mysql_query($sql1) or die(mysql_error());
$data_Ar = mysql_fetch_array($req1);

$sql2 = "SELECT DAYOFMONTH('$dp')";
$req2 = mysql_query($sql2) or die(mysql_error());
$data_dp = mysql_fetch_array($req2);

$resultat = $data_dp[0] - $data_Ar[0] ;

echo $resultat
----------------------

mais bon, ca marche pour deux dates du meme mois, en l'occurence.

N'existe-t-il pas une fonction MySql qui permette de calculer le nombre de jours au moment ou on lit la table ? a l'extraction des deux dates...?

Quelle en ai la syntaxe.
Je ne comprend pas bien comment on utilise DATE_SUB() et son copain...

Merci d'avance
Ric

Posté : 06 janv. 2007, 17:19
par Cyrano
Alors utilise DAYOFYEAR(date) : ça fonctionnera sur des dates à cheval sur plusieurs mois. Par contre tu retomberas dans le même problème avec des dates à cheval sur plusieurs années.

Alors en explorant plus loin dans la doc, on trouve aussi ceci :
DATEDIFF(expr,expr2)

DATEDIFF() retourne le nombre de jours entre la date de début expr et la date de fin expr2. expr et expr2 sont des expressions de type DATE ou DATETIME. Seule la partie DATE est utilisée dans le calcul.

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
mysql> SELECT DATEDIFF('1997-11-31 23:59:59','1997-12-31');
-> -30

DATEDIFF() est disponible depuis MySQL 4.1.1.
et en SQL, tu traduis ça avec le nom de tes champs de date :

Code : Tout sélectionner

SELECT DATEDIFF(champ_date_1, champ_date_2);

Posté : 06 janv. 2007, 17:27
par undesignable
Salut,

Merci.

J'ai essayé, mais j'ai un probleme de syntaxe avec les doubles guillements :

SELECT DATEDIFF('data['datedebut']','data['dateFin']');

mais p't'être
SELECT DATEDIFF('$dp','$Ar');
que ca c'est mieux.

j'y retourne.
merci encore

@+

Posté : 06 janv. 2007, 17:31
par Cyrano
SELECT DATEDIFF('data['datedebut']','data['dateFin']');
:shock: C'est quoi ça ???
Les paramètres de DATEDIFF doivent être soit le nom d'un champ de ta base soir une date formatée convenablement. Là, tu as mis quelque chose qui ressemble vaguement à un tableau : il n'existe pas de tableaux en SQL.

Donc au final, je ne comprends pas ce que tu essayes de faire.

Posté : 06 janv. 2007, 17:42
par Truc
SELECT DATEDIFF('data['datedebut']','data['dateFin']');
:shock: C'est quoi ça ???
Hi hi
ça doit venir de là :
$Ar = $data_de_la_table['DateDeLarrive'];
$dp = $data_de_la_table['DateDuDepart']; 
des données d'avant la requête.
Sinon j'aime bien donner ce sujet à lire :)

Posté : 06 janv. 2007, 18:12
par undesignable
<?
$sql = "SELECT DATEDIFF(R1_DA, R1_DD) FROM nom_tble WHERE id=".$_SESSION['id'];
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_array($req);
?>
--- --- --- --- --- ---</br>
<?=$data?> night(s)

Ca ne marchais pas et obtenais :

Array night(s)

forcement, les tableaux....
--> <?=$data[0]?> night(s)

Merci beaucoup a tous les deux.

Cordialement votre
ric

Posté : 06 janv. 2007, 20:21
par fab
Petit plus il est de plus en plus déconseillé d'utiliser lesshorts tags en php
à savoir remplacer :
<? par <?php
et
<?=$var; ?> par <?php echo $var; ?>

Explication : Avec la multplication actuellement de XML sur la toile de plus en plus d'hébergeur désactivent la directive shorts_tags dans la configuration de php car celà pose un problème ( facilement contournable ) lors de la génération des headers XML.
( En tout cas c'est une des raisons )

Posté : 07 janv. 2007, 09:57
par undesignable
oula,

ben merci du tuyau. Je ne savais pas. vais me coller sur un rechercher/remplacer rapidos...

Sinon,
Auriez-vous l'adresse d'un editeur, autre que wordPad,
avec par exemple, le numero des lignes, et des distinctions de couleurs ?
en free, biensur. (J'aime bien l'idée des logiciels libre de droits)

suis pas trés habitué au Forum, mais ca a l'air sympas chez vous.

Les autres rubriques sont trés pedagogiques, et on apprend pas mal de trucs.

@+ :wink:

Posté : 07 janv. 2007, 14:39
par Truc
suis pas trés habitué au Forum, mais ca a l'air sympas chez vous.
Les autres rubriques sont trés pedagogiques, et on apprend pas mal de trucs.
Tu n'en repartiras jamais déçu :)

Pour l'éditeur jette un oeil à "Notepad++"

Posté : 07 janv. 2007, 18:35
par undesignable
J'ai telecharger et installer notepadd++.

La grande classe !!!

Ouaaaahou !

Ca fait tout drole. J'etais habitué au wordpad de windows, mais la ...

@+ :-({|=
nooooooon je ne regreeeeeettttteeeee rieeeeennnnn.

Merci