2011-10-19 12 views
31

Mam tabelę w MySQL. Jak wyglądałaby instrukcja SQL, aby dodać 2 dni do wartości bieżącej daty w tabeli?MySQL dodać dni do daty

UPDATE classes 
SET 
date = date + 1 
where id = 161 

to dodaje jedną sekundę do wartości, nie chcę aktualizować czasu, chcę dodać dwa dni?

+0

możliwy duplikat [Dodaj 30 dni na datę w db] (http://stackoverflow.com/questions/1609377/add-30-days-for-date-in-db) – JJJ

Odpowiedz

69

Zakładając, że pole jest date typ (lub podobny):

SELECT DATE_ADD(`your_field_name`, INTERVAL 2 DAY) 
FROM `table_name`; 

Z przykład już dostarczonych może to wyglądać tak:

UPDATE classes 
SET `date` = DATE_ADD(`date` , INTERVAL 2 DAY) 
WHERE `id` = 161; 
+0

jego datetime ... czy to będzie wciąż pracuję? – Beginner

+0

Tak, będzie działać również z typem daty i godziny. – Bjoern

1

do potrzeb użytkownika:

UPDATE classes 
SET `date` = DATE_ADD(`date`, INTERVAL 2 DAY) 
WHERE id = 161 
5
UPDATE table SET nameofdatefield = ADDDATE(nameofdatefield, 2) WHERE ... 
+0

Dziękujemy za dodanie tego alternatywnego sposobu dodawania dni do pola daty. Szukałem sposobu na zwiększenie daty za pomocą argumentu procedury składowanej zawierającego liczbę dni. Niestety składnia DATE_ADD na to nie pozwala. – w5m

1
DATE_ADD(FROM_DATE_HERE, INTERVAL INTERVAL_TIME_HERE DAY) 

będzie podać datę po regulacji odstępu

np.

DATE_ADD(NOW(), INTERVAL -1 DAY) for deducting 1 DAY from current Day 
DATE_ADD(NOW(), INTERVAL 2 DAY) for adding 2 Days 

można używać jak

UPDATE classes WHERE date=(DATE_ADD(date, INTERVAL 1 DAY)) WHERE id=161 
0
SET date = DATE_ADD(fieldname, INTERVAL 2 DAY) 
4

To zapytanie stoi dobry do pobierania wartości pomiędzy bieżącą datą i jego najbliższych 3 terminach

SELECT * FROM tableName 
WHERE columName BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY) 

To w końcu dodać dodatkowy 3 dni bufora do bieżącej daty.

+0

Tego właśnie chcę. dzięki –