2016-05-25 9 views
1

Warum führt die folgende Abfrage in MySQL zu einer Null für dieses timestampdiff()?Warum bekomme ich einen NULL für dieses timestampdiff()?

SELECT EndDate, /* EndDate is YEAR(4) datatype with value 2013 */ 
     year('2015-01-01') a, 
     timestampdiff(YEAR, Year('2015-01-01'), EndDate) b 
    FROM table 

Ergebnisse:

EndDate  a  b 
    2013 2015 NULL 
+0

Meine Vermutung wäre, weil 'YEAR' kein Date- oder Datetime-Datentyp ist. https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff – Uueerdo

+0

Ja. Ich habe es behoben, indem ich einen Monat/Tag angehängt habe und er sieht es als Datetime. SELECT EndDate, CONCAT (EndDate, '- 01-01') a, TIMESTAMPDIFF (YEAR, STR_TO_DATE ('2015.01.01', '% Y-% m-% d'), CONCAT (EndDate , '- 01-01')) d FROM tblboard' –

Antwort

0

MySQL konvertiert YEAR (4) -Datentypen nicht automatisch in DATETIME. Ich habe es behoben, indem ich einen Monat/Tag an EndDate angehängt habe und es als DATETIME ansieht.

SELECT EndDate, timestampdiff(YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), CONCAT(EndDate,'-01-01')) d FROM table

Dank für die Identifizierung des Problems @Uueerdo.

0

Versuchen Sie das Jahr ein stingr auf ein gültiges Datum

SELECT EndDate, /* EndDate is YEAR(4) datatype with value 2013 */ 
    STR_TO_DATE('2015-01-01','%Y-%m-%d') a, 
    timestampdiff(YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), EndDate) b 
FROM table 
1

timestampdiff() erfordert gültige Daten für das zweite und dritte Argument konvertieren. YEAR('2015-01-01') gibt 2015 zurück, das kein gültiges Datum ist, das timestampdiff() bricht, wodurch es NULL zurückgibt. Machen Sie einfach das zweite Argument '2015-01-01' und solange Ihre EndDate gut ist, sollte es funktionieren.

+0

Wie @UUeerdo herausgefunden hat, wurde der YEAR (4) -Datentyp bisher nicht konvertiert. Ich habe es behoben, indem ich einen Monat/Tag angehängt habe und er sieht es als Datetime. 'SELECT EndDate, CONCAT (Enddatum, '- 01-01') a, Zeitstempeldiff (YEAR, STR_TO_DATE ('2015-01-01', '% Y-% m-% d'), CONCAT (EndDate '- 01-01')) d FROM tblboard' –

Verwandte Themen