2009-09-17 16 views
41

Mysql'de bir datetime alanı (endTime) var. Bu endTime alanını doldurmak için gmdate() kullanıyorum.datetime için 30 dakika ekleyerek php/mysql

Kaydedilen değer, 2009-09-17 04:10:48 gibi bir şeydir. Bu zamana 30 dakika eklemek ve şimdiki zamanla karşılaştırmak istiyorum. yani) kullanıcının belirli bir görevi kendi süresi içinde sadece 30 dakika yapmasına izin verilir. Bitiş zamanından 30 dakika sonra, bir görev yapmasına izin vermemeliyim.

Bunu php'de nasıl yapabilirim?

Bölge farklılıkları olmadığından emin olmak için gmdate kullanıyorum. peşin

cevap

96

yılında

teşekkürler MySQL kullanıyorsanız bunu şöyle yapabiliriz:

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


saf PHP çözüm kullanımı için strtotime

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

Kullanım DATE_ADD fonksiyonu. Bunu hiç bilmiyordum. – jocull

5

MySQL bir işlevi vardır Birlikte iki kez eklemek için ADDTIME denir - böylece MySQL'de her şeyi yapabilirsiniz (pr • => MySQL 4.1.3 kullanıyorsunuz. (Denenmemiş) gibi

şey:

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

Buraya datetime değişkenleri eklemek için genel bir yol bulmak için geldim ve sadece bu cevap benim için çalıştı. – kurast

42

bu bir

DATE_ADD(datefield, INTERVAL 30 MINUTE) 
5

Dominc doğru karar verdi, ama deneyin ifade diğer tarafta hesaplama koydu.

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

Bu, her satır yerine bir kez 30 dakikalık hesaplamanızın avantajına sahiptir. Bu ayrıca MySQL'in bu sütundaki dizini kullanabileceği anlamına gelir. İkisi de sana bir hız kazandırıyor.

2

MySQL hile müthiş Yani
DATE_ADD(datecolumn, INTERVAL 30 MINUTE);