2010-05-15 5 views
0

est-il possible d'utiliser date_sub comme ça?date question question

$dt = date("Y-m-d h:i:s"); 

$query = "INSERT INTO `table` (`date`) VALUES ('DATE_SUB('$dt', INTERVAL 15 DAY)')"; 

$result = MYSQL_QUERY($query); 

Merci

+0

exécutez juste cela et voir ce qui se passe. –

Répondre

0

Vous pouvez l'utiliser sur la base de données en supprimant les guillemets autour de DATE_SUB(...). Mais vous devriez envisager d'utiliser l'horodatage unix avec le temps() et reconvertissant à un format de date en utilisant la fonction date(), comme ceci:

$dt = date("Y-m-d h:i:s", time() - 15*24*3600); //today - 15 days 

Fonctionne avec PHP 4 et PHP 5.

1

Je vous conseille de ne pas laisser les calculs de calendrier pour la base de données. Utilisez le code DateTime class à la place et l'extension timezonedb est mise à jour. C'est en fait une de ces choses que PHP obtient correctement. Voir aussi this post sur le blog de Derick.

+0

doesnt datetime nécessite PHP 3.0? –

+0

Vous probablement ment 5.3 - répondre: non, toutes les fonctionnalités nécessaires sont en 5.2 –

+0

oh désolé je voulais dire 5.3 ok, pouvez-vous montrer un exemple de code? et si je dois le faire sur base de données? merci –

1

C'est faux 'DATE_SUB('$dt', INTERVAL 15 DAY)', c'est une chaîne. Maintenant, votre format de date est identique au format utilisé par la fonction NOW() de MySQL.

SELECT NOW(); 
--------------------- 
|now()    | 
--------------------- 
|2010-05-15 20:42:35| 
--------------------- 

Et comme je l'ai utilisé sans aucun problème DATE_SUB(NOW(), INTERVAL 6 MONTH); dans un projet récent, je ne vois aucune raison pour laquelle vous ne pouviez pas l'utiliser.

SELECT DATE_SUB(NOW() , INTERVAL 6 MONTH); 
----------------------------------- 
|DATE_SUB(NOW(), INTERVAL 6 MONTH)| 
----------------------------------- 
|2009-11-15 20:49:28    | 
----------------------------------- 
+0

ouais tu as raison, merci pour info –