2009-09-17 12 views
41

में 30 मिनट जोड़ना मेरे पास mysql में डेटाटाइम फ़ील्ड (एंडटाइम) है। मैं इस अंत समय क्षेत्र को पॉप्युलेट करने के लिए gmdate() का उपयोग करता हूं।डेटाटाइम php/mysql

संग्रहीत मूल्य 200 9-17-17 04:10:48 जैसा कुछ है। मैं इस अंतराल में 30 मिनट जोड़ना चाहता हूं और वर्तमान समय के साथ इसकी तुलना करना चाहता हूं। यानी) उपयोगकर्ता को अपने अंत समय के भीतर केवल 30 मिनट का एक निश्चित कार्य करने की अनुमति है। अपने अंत समय के 30 मिनट के बाद, मुझे उसे एक कार्य करने की अनुमति नहीं देनी चाहिए।

मैं php में ऐसा कैसे कर सकता हूं?

मैं यह सुनिश्चित करने के लिए जीएमडीएटी का उपयोग कर रहा हूं कि कोई क्षेत्र अंतर नहीं है।

अग्रिम

उत्तर

96

धन्यवाद आप MySQL उपयोग कर रहे हैं आप इस तरह यह कर सकते हैं:

SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE; 


एक शुद्ध पीएचपी समाधान उपयोग के लिए strtotime

strtotime('+ 30 minute',$yourdate); 
+6

MySQL चाल भयानक है। उस बारे में कभी नहीं पता था। – jocull

5

MySQL एक समारोह है दो बार जोड़ने के लिए ADDTIME कहा जाता है - ताकि आप पूरी चीज MySQL (pr ovided आप> = MySQL 4.1.3 का उपयोग कर रहे हैं)।

कुछ (untested) की तरह:

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT') 
+0

मैं यहां डेटाटाइम चर जोड़ने के लिए एक सामान्य तरीका ढूंढ रहा था, और केवल यह जवाब मेरे लिए काम किया। – kurast

42

यह एक

DATE_ADD(datefield, INTERVAL 30 MINUTE) 
5

Dominc सही विचार है की कोशिश करो, लेकिन अभिव्यक्ति के दूसरे पक्ष पर गणना डाल दिया।

SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE) 

यह लाभ यह है कि आप हर पंक्ति पर 30 मिनट की गणना कर रहे हैं एक बार के बजाय है। इसका मतलब है कि MySQL उस कॉलम पर इंडेक्स का उपयोग कर सकता है। दोनों ही आपको एक गति प्रदान करते हैं।

2

उपयोग DATE_ADD समारोह

DATE_ADD(datecolumn, INTERVAL 30 MINUTE); 
संबंधित मुद्दे