Soustraction entre deux dates...

Petit nouveau ! | 28 Messages

06 Jan 2007, 17:05

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
Il n'y a pas de mauvaises saisons, seulement de mauvais vetements

Avatar de l’utilisateur
Mammouth du PHP | 19613 Messages

06 Jan 2007, 17:19

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 :
l'auteur du manuel MySQL a écrit :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);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 28 Messages

06 Jan 2007, 17:27

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

@+
Il n'y a pas de mauvaises saisons, seulement de mauvais vetements

Avatar de l’utilisateur
Mammouth du PHP | 19613 Messages

06 Jan 2007, 17:31

undesignable a écrit :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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7637 Messages

06 Jan 2007, 17:42

Cyrano a écrit :
undesignable a écrit :SELECT DATEDIFF('data['datedebut']','data['dateFin']');

:shock: C'est quoi ça ???

Hi hi
ça doit venir de là :
[php]$Ar = $data_de_la_table['DateDeLarrive'];
$dp = $data_de_la_table['DateDuDepart']; [/php]
des données d'avant la requête.
Sinon j'aime bien donner ce sujet à lire :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 28 Messages

06 Jan 2007, 18:12

<?
$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
Il n'y a pas de mauvaises saisons, seulement de mauvais vetements

ViPHP
fab
ViPHP | 2657 Messages

06 Jan 2007, 20:21

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 )
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Petit nouveau ! | 28 Messages

07 Jan 2007, 09:57

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:
Il n'y a pas de mauvaises saisons, seulement de mauvais vetements

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7637 Messages

07 Jan 2007, 14:39

undesignable a écrit :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++"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 28 Messages

07 Jan 2007, 18:35

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
Il n'y a pas de mauvaises saisons, seulement de mauvais vetements