2010-02-01 19 views
10

Po Widziałem wiele pytań tutaj wykorzystaniem DATE_SUB() lub DATE_ADD() funkcje zamiast arytmetycznej operatorów + lub -, zastanawiałem się, czy jest jakaś różnica:Czy jest jakaś różnica między DATE_SUB() i operatory arytmetyczne do obliczenia datetime?

Cytat z MySQL-manual:

Data arytmetyczna może także być wykonywane za pomocą INTERVAL wraz z + lub - operator:

date + INTERVAL expr unit 
date - INTERVAL expr unit 

Więc w zasadzie te dwa oświadczenia zwracają ten sam wynik:

SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); 

i

SELECT NOW() + INTERVAL 7 DAY; 

Teraz moje pytanie:

Czy jest jakaś różnica między DATE_SUB() i za pomocą operatora w - MySQL? (oprócz czytelności?)

Odpowiedz

4

Dokumentacja MySQL dla DATE_ADD (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add) wyraźnie stwierdza, że ​​możesz zrobić Arytmetyka daty z operatorami + i -.

Data arytmetyczna może także być wykonywane za pomocą INTERVAL wraz z + lub - operatora:

Data + CZASU wyrażenie jednostka

data - urządzenie wyrażenie CZASU

Biorąc pod uwagę, że jest to zatwierdzone przez doktorów, myślę, że każda różnica jest stylistyczna. Osobiście uważam, że +/- jest łatwiejszy do odczytania (w końcu nie używasz INT_ADD (...) lub DOUBLE_ADD (...) do manipulowania wartościami liczbowymi, więc dlaczego daty?). Inni mogą mieć swoje własne powody do polubienia DATE_ADD i DATE_SUB, i to też jest w porządku. Po prostu wybierz coś i trzymaj się go.

Jemiah

3

Dla mnie jest to kwestia doświadczenia. Po pracy z wieloma edytorami, bibliotekami i narzędziami manipulującymi bazami danych nauczyłem się nie ufać operatorom "+" i "-" tak długo, jak ufam DATE_SUB(). Jest o wiele mniej prawdopodobne, że coś zostanie przypadkowo uszkodzone w ramach aktualizacji oprogramowania za pomocą DATE_SUB(), w porównaniu z użyciem +/-

+2

Czy mógłbyś to trochę wyjaśnić? W takim przypadku edytor łamie składnię sql? –

+0

Na przykład w przypadkach, w których parser jest zepsuty - za pomocą edytora SQL akceptującego nieprawidłowy SQL jako poprawny lub wskazującego, że poprawny kod SQL jest niepoprawny i nie akceptuje go. – blueberryfields

Powiązane problemy