2013-02-01 7 views
22

मुझे डेटाबेस से डेटाटाइम के विरुद्ध वर्तमान समय की जांच करने की आवश्यकता है, अगर यह 30 मिनट हो तो कोड निष्पादित करें, अगर नहीं तो। यह वह जगह है जहाँ मैं पर हूँ और मैं अटक कर रहा हूँ:डेटाबेस से वर्तमान समय पर टाइमस्टैम्प की तुलना

$link = mysqli_connect("hostname", "username", "password", "database"); 
$q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1"; 
$qu = mysqli_query($link, $q); 

while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){ 
     $id = $row['id']; 
     $cache = $row['cache']; 
     $timest = $row['time']; 
    } 

$newTime = 
$difference = $timest 
if($timest >=) 

आप नीचे मैं इसे खो की ओर देख सकते हैं के रूप में मैं क्या करना है यकीन नहीं है।

$timest रिटर्न: 2013-02-01 12:36:01 प्रारूप डबल पोस्ट पर Y-m-dh-i-s

क्षमा याचना, अन्य को नष्ट कर दिया है।

उत्तर

37

पहले परिवर्तित $ timest टाइमस्टैम्प के

$time = strtotime($timest); 

$curtime = time(); 

if(($curtime-$time) > 1800) {  //1800 seconds 
    //do stuff 
} 
+0

1800 सेकंड, मिनट या घंटे है? –

+0

सेकेंड लेकिन तारीखों के ये सभी कनवर्टिंग समय/संसाधनों की बर्बादी है जब आप इसे सभी प्रश्नों में कर सकते हैं और बस उस आईडी की एक सूची वापस प्राप्त करें जिसे आपको संसाधित करने की आवश्यकता है। – Dave

-1
SELECT id FROM dwCache ORDER BY id DESC LIMIT 1 

आप केवल id क्षेत्र मिल जाएगा, यह पहली है। दूसरा, समय कनवर्ट करने के लिए: MySQL convert datetime to Unix timestamp

तीसरा: आप strtotime फ़ंक्शन का उपयोग करके अपना समय स्ट्रिंग कन्वर्ट कर सकते हैं।

2

मुझे इस स्थिति में unix timestamps का उपयोग करना पसंद है।

$timest = date('u'); // gets the unix timestamp 
$q = "SELECT id 
     FROM `dwCache` 
     WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800"; 

स्पष्टीकरण:

यह मूलतः वर्तमान समय और तालिका स्तंभ में समय के बीच अंतर की गणना करता है। यदि यह 1800 (30 मिनट) से अधिक है, तो यह पंक्ति का चयन करेगा, और आपका PHP कोड निष्पादित किया जाएगा।

लाभ

वहाँ के बजाय इस का उपयोग कर PHP के लिए कुछ फायदे हैं आप करना शुरू कर दिया की जाँच करें। आप कम पंक्तियों का चयन करेंगे, इस प्रकार कम स्मृति पर कब्जा करेंगे।

पुनश्च:

MySQLi प्रयोग करने के लिए ऊपर अंगूठे!

9

एसक्यूएल बयान

SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE); 

यह अपनी मेज से सब कुछ वापस आ जाएगी जहां समय कॉलम अब से पहले 30 मिनट पहले है में यह सब करते हैं।

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