sarcină
Doriți să adăugați timp la valoarea dată sau la data și ora.
Soluția
Utilizați funcțiile DATE_ADD () și DATE_SUB (), special concepute pentru a efectua operații aritmetice cu date. De asemenea, puteți utiliza TO_DAYS () și FROM_DAYS () sau UNIX_TIMESTAMP () și FROM_UNIXTIME ().
discuție
Operațiile aritmetice cu date sunt puțin mai complicate decât în timp, datorită lungimii variabile a lunilor și anilor. Prin urmare, MySQL oferă caracteristici speciale DATE_ADD () și DATE_SUB () pentru a adăuga intervale cu datele și scăzând din funcția nih.1 ia data valoarea și intervalul d în următorul format:
DATE_ADD (d, valoarea INTERVAL a unuia)
DATE_SUB (d, valoarea INTERVAL a unuia)
unde o unitate este o unitate de măsură pentru un interval, iar o valoare este o expresie care specifică numărul de astfel de unități. Cele mai frecvente includ astfel de unități specifiers ca anul, luna, ziua, ora, minut și secundă (o listă completă este dată în manualul MySQL). Rețineți că unitatea de măsură este indicată nu în plural, ci în singular.
Folosind funcțiile DATE_ADD () și DATE_SUB (), puteți efectua următoarele operații aritmetice:
• Stabiliți data care va veni la trei zile după ziua de astăzi:
mysql> SELECT CURDATE (), DATE_ADD (CURDATE (), INTERVAL 3 DAY);
• Verificați datele pas cu pas săptămână în urmă (cu intervalul săptămână, interogarea utilizează ZIUA 7 valoare, deoarece nu există nici o unitate de săptămână): mysql> SELECT CURDATE (), DATE_SUB (CURDATE (), INTERVAL 7 zi);
• Dacă trebuie să cunoașteți atât data cât și ora, începeți din DATETIME sau TIMESTAMP.
Pentru a răspunde la întrebarea: "Cât timp va fi în 60 de ore?", Executați următoarea interogare:
mysql> SELECT ACUM (), DATE_ADD (ACUM (), INTERVAL 60 HOUR);
• Unii anumiți parametri includ atât data cât și ora. Următoarea interogare adaugă la data și ora curente paisprezece ore și jumătate:
mysql> SELECT ACUM (), DATE_ADD (ACUM (), INTERVAL '14: 30 'HOUR_MINUTE);
În mod similar, puteți adăuga 3 zile și 4 ore:
mysql> SELECT ACUM (), DATE_ADD (ACUM (), INTERVAL '3 4' DAY_HOUR);
Funcțiile DATE_ADD () și DATE_SUB () sunt interschimbabile, deoarece una dintre ele este aceeași ca și cealaltă cu un interval de semn opus.
De exemplu, două astfel de apeluri sunt echivalente pentru orice valoare de dată d:
DATE_ADD (d, INTERVAL -3 luni)
DATE_SUB (d, INTERVAL 3 LUNI)
Începând cu MySQL 3.23.4, puteți utiliza operatorii + și - pentru a adăuga și a scădea intervalele de date:
mysql> SELECT CURDATE (), CURDATE () + INTERVAL 1 ANUL;
mysql> SELECT ACUM (), ACUM () - INTERVAL 24 HOUR;
Pentru a adăuga intervale la o dată sau la o valoare dată-dată, puteți utiliza și funcțiile de conversie pentru unitățile de bază și invers. De exemplu, pentru a muta data înainte sau înapoi timp de o săptămână (șapte zile), utilizați funcțiile TO_DAYS () și FROM_DAYS ():
Funcția TO_DAYS () poate, de asemenea, să convertească valorile DATETIME și TIMESTAMP în zile, ceea ce este convenabil pentru cei care nu au nevoie de o parte din timp:
Pentru a asigura acuratețea valorilor DATETIME și TIMESTAMP utilizarea funcției UNIX_TIMESTAMP () și FROM_UNIXTIME () în locul considerate anterior.
Modificați valoarea DATETIME pentru o oră (3600 secunde) înainte și înapoi:
Pentru a implementa ultima recepție, este necesar ca atât sursa cât și valorile rezultate să se încadreze în intervalul permis pentru valorile TIMESTAMP (din 1970, uneori până în 2037).