Błąd "Incorrect datetime value: 0"

0

Cześć,
Czy ktoś byłby w stanie znaleźć błąd w poleceniu :

UPDATE hr
SET termdate = DATE(str_to_date(termdate, '%Y-%m-%d %H:%i:%s UTC'))
WHERE termdate IS NOT NULL AND termdate !='';

Zwracany błąd:

The error code: 1411. Incorrect datetime value: „0”. for function str_to_date. 

Bez znaku „!” polecenie jest wykonywane pomyślnie, natomiast puste komórki są wypełnione „0”, a nie „0000-00-00”.

Bez problemu skrypt jest realizowany w SSMS, natomiast pojawi się problem w MySQL.

1

Ja bym to skwitował tym że każdy silnik bazy danych może trochę inaczej obsługiwać "durne dane"
Rozwiazanie to w przyadku "0" wpisać "jakaś" datę bo co to jest "0" ?

3

Ech, ja to bym zaproponował aby pola, które w nazwie mają "date" lub ich wartości są datami, były typu DATE / DATETIME / TIMESTAMP.

3

Dla niektórych data zero to January 1, 1970 in UTC.

Z pierwszego lepszego Google search:
MySQL retrieves and displays DATE values in ' YYYY-MM-DD ' format. The supported range is '1000-01-01' to '9999-12-31' .
I już masz wyjaśnienie... Daj tam bitwę pod Grunwaldem to przejdzie...

Nie można przenosić zapytań SQL pomiędzy "vendorami", oni robią specjalnie tak żeby trzymać się jak najdalej od standardu (dość ubogiego zresztą) SQL'a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1