MySQL

2010-10-29 8 views
12

में डेटाटाइम में सेकेंड जोड़ना मैं कुछ घटनाओं के आधार पर किसी तारीख को सेकंड जोड़ने की कोशिश कर रहा हूं। अक्सर बार, यदि ये घटनाएं एक ही समय में होती हैं, तो बहुत से सेकंड जोड़े जाते हैं। यहाँ कैसे मैं वर्तमान में PHP और MySQL में यह कर रहा हूँMySQL

$time_add_on = 15 - $seconds_left; 
DATE_ADD(STR_TO_DATE(end_dt,'%Y-%m-%d %H:%i:%s'), INTERVAL '".$time_add_on."' SECOND 

क्या यह क्या कर रहा है वर्तमान 'END_DT' घटाकर 15 और 'END_DT' में जोड़ने से छोड़ दिया सेकंड ले जा रहा है, मूल रूप से आप 15 सेकंड दे छोड़ दिया है ।

यहां लक्ष्य मूल रूप से 15 सेकंड जोड़ता है या उस तारीख को रीसेट करता है जहां केवल 15 सेकंड शेष हैं। यह समस्याएं पैदा कर रहा है, जहां 15 सेकंड तक रीसेट करने की बजाय, इसमें 30 सेकंड या 45 सेकंड जोड़े जाएंगे।

क्या कोई इसे करने का सबसे अच्छा तरीका जान सकता है?

उत्तर

22
UPDATE table end_dt = DATE_ADD(end_dt, INTERVAL 15 second) 
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW() 

मुझे लगता है कि तुम क्या चाहते हो, मूल रूप से 15 सेकंड कहते हैं END_DT जब END_DT 15 सेकंड अब

संपादित करें नई क्वेरी से दूर इस क्वेरी काम करना चाहिए है:

UPDATE `table` 
    SET end_dt = DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND) 
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW() 
+0

अरे लोगान, इसलिए यह काम नहीं करेगा क्योंकि अगर 10 सेकंड शेष हैं, और आप 15 जोड़ते हैं, तो यह 25 सेकंड शेष होगा। – dzm

 संबंधित मुद्दे