2010-10-29 33 views
12

Tôi đang cố gắng thêm giây vào một ngày dựa trên các sự kiện nhất định xảy ra. Thông thường, nếu những sự kiện này xảy ra cùng một lúc, quá nhiều giây sẽ được thêm vào. Đây là cách tôi hiện đang làm việc đó trong PHP và MySQLThêm giây vào datetime trong 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 

Điều này đang làm là lấy giây hiện tại trái từ 'END_DT' trừ 15 và thêm nó vào 'END_DT', về cơ bản đem lại cho bạn 15 giây còn lại .

Mục tiêu ở đây về cơ bản là quá 15 giây hoặc đặt lại ngày thành nơi chỉ còn 15 giây. Điều này gây ra sự cố, thay vì đặt lại còn 15 giây, nó sẽ thêm 30 giây hoặc 45 giây.

Có ai biết cách tốt nhất để làm điều này không?

Trả lời

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

Tôi nghĩ đó là những gì bạn muốn, về cơ bản thêm 15 giây để END_DT khi END_DT là 15 giây đi từ nay

EDIT MỚI QUERY Truy vấn này nên làm việc:

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

Hey Logan, vì vậy điều này sẽ không hiệu quả vì nếu còn 10 giây, và bạn thêm 15 giây, còn 25 giây nữa. – dzm

Các vấn đề liên quan