Bonjour,
Dans une table j'ai le champ expired, et je veux un resultat SQL par ex: 3 jours par rapport a NOW();
est-ce possible uniquement en SQL ?
Merci
Hello agencep,
Pour calculer la différence entre deux dates en SQL tu peux utiliser la fonction datediff (http://sql.sh/fonctions/datediff)
Hello AntoineCourtin,
Ok mais est ce que DATEDIFF prends en charge les variable PHP ?
je veux dire
SELECT DATEDIFF( date1, date2 ) = 3 FROM .....
Au faite je veux ressortir les données dont la date EXPIRED est supérieur à NOW();
Au faite la solution que j'ai trouvé pour l'instant mais qui demande beaucoup de traitement après
$ExpireIn = 3;
$var = $this->MODEL->find('all', [
'fields' => [
'DATEDIFF(MODEL.expired,NOW()) = ' . $ExpireIn . ' AS ExpireIn',
'MODEL.name',
'MODEL.id'
],
'conditions' => [
'MODEL.online' => 1,
],
]);
Le resultat est :
Array
(
[0] => Array
(
[0] => Array
(
[ExpireIn] => 0
)
[MODEL] => Array
(
[name] => xxxxxxxxx
[id] => 2
)
)
)
Il se peut que tu fasses une requête avec 2 formats de dates différents. Par ex. : un DATE avec un DATETIME, ou un format DATETIME en 'm/d/Y H:I' et l'autre en 'Y-m-d H:i:s'.
Au quel cas, tu n'obtiens qu'un résultat nul à cause de ce type de conflit...
Par ailleurs, puisque tout fonctionne sous PHP, pourquoi ne pas faire ce type de calcul en PHP plutôt que par MySQL ? Une seule requête MySQL et tout le reste est calculé par PHP, avec un gain en performance et c'est plus facile à debugger. Non ?
Bonjour mzkd,
Le MySQL est plys rapide quand il s'agit de beaucoup de données, c'est la raison de mon choix dans la rerequête.