2017-04-25 4 views
0

Je stocke une date sous la forme 'd-m-Y H: i: s'.Lorsque la date est postérieure à

Je dois vérifier si cette date enregistrée est postérieure à la variable $limit_date. La variable $limit_date est -30 jours de la date actuelle, stockée dans 'd-m-Y'.

Je pensais que ce qui suit fonctionnerait, mais aucun résultat n'est retourné.

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y", $limit_date); 

$this->db->where('date_submitted >', $limit_date); 

Mon test date_submitted est '25-04-2017 09:13:13' avec $limit_date retour '26 -03 à 2017.

+0

Avez-vous essayé d'ajouter en utilisant 'dmY H: i: s' lors du formatage' $ limit_date'? Vous feriez mieux d'utiliser la date formatée au format UNIX, puis de déterminer si les dates sont postérieures à ce qui est stocké. – mickburkejnr

+0

_ "Mon test date_submitted est '25 -04-2017 09:13:13 'avec $ limit_date retournant '26 -03-2017'" _ - vous comparez _strings_ ici, et cela arrive caractère par caractère. Le premier caractère est '2' dans les deux valeurs, donc nous devons regarder le suivant -' 5' et '6',' 6' est un caractère "plus grand" que '5', donc ne correspond pas. // Utilisez un type de colonne date correcte dans votre table, puis utilisez les fonctions date/heure MySQL pour créer l'intervalle de comparaison. – CBroe

Répondre

0

Dans ce code, nous utilisons DateTime et DateInterval. DateInterval pour soustraire une quantité exacte de jours que vous souhaitez.

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$days=30; 
$object = new DateTime("25-04-2017 09:13:13");//giving the date from which we want to subtract. 
$object->sub(new DateInterval("P".$days."D"));//passing the interval which we want to subtract 
echo $object->format("d-m-Y H:i:s"); 
1

Essayez ceci:

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y H:i:s", $limit_date); 

$this->db->where('date_submitted >', $limit_date); 
0

Je pense que ce serait mieux si vous avez converti pour la requête du date_submitted dans votre DB à jour si vous ne voulez pas jouer avec heures: minutes: secondes

Exemple:

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y", $limit_date); 
$this->db->where('DATE(date_submitted) >', $limit_date); 
0

essayer:

WHERE date_submitted > DATE_ADD(CURDATE(), INTERVAL - 30 DAY) // for 30days 

ou

WHERE date_submitted > DATE_ADD(NOW(), INTERVAL - 30 DAY) // for 30*24hours 
1

je pense que vous voulez changer la chaîne de champ de date à ce jour

STR_TO_DATE (date_submitted, '% Y-% m-% d')

$limit_date = date('Y-m-d', strtotime('-30 days')); 

$this->db->where('STR_TO_DATE(date_submitted, '%Y-%m-%d') >', $limit_date); 
+1

Merci son travail bien pour moi. –