簡體   English   中英

將 30 分鍾添加到日期時間 php/mysql

[英]adding 30 minutes to datetime php/mysql

我在 mysql 中有一個日期時間字段(endTime)。 我使用 gmdate() 來填充這個 endTime 字段。

存儲的值類似於 2009-09-17 04:10:48。 我想為此結束時間添加 30 分鍾,並將其與當前時間進行比較。 即)用戶只允許在他的 endTime 內的 30 分鍾內完成某項任務。 在他結束時間 30 分鍾后,我不應該讓他做任務。

我怎么能在 php 中做到這一點?

我正在使用 gmdate 來確保沒有區域差異。

提前致謝

如果你使用MySQL,你可以這樣做:

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


對於純 PHP 解決方案,請使用strtotime

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

試試這個

DATE_ADD(datefield, INTERVAL 30 MINUTE)

MySQL 有一個名為ADDTIME的函數,用於將兩次相加 - 因此您可以在 MySQL 中完成整個操作(前提是您使用的是 >= MySQL 4.1.3)。

類似的東西(未經測試):

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

Dominc 有正確的想法,但將計算放在表達式的另一側。

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

這樣做的好處是您只需進行一次 30 分鍾的計算,而不是對每一行進行計算。 這也意味着 MySQL 可以使用該列上的索引。 這兩者都可以為您提供加速。

使用 DATE_ADD 函數

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);

通過添加 30 分鍾從 MySQL 表中獲取日期

SELECT loginDate, date_add(loginDate,interval 30 minute) as newLoginDate 
FROM `tableName`;

這將導致如下

Login Date - 2020-07-22 14:00:00
New Login Date - 2020-07-22 14:30:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM