Pragerer: MySQL: STR_TO_DATE-Frage

Hallo!

Wenn ich dieses Statement mit Navicat (einem Datenbank-Frontend) an meine Datenbank absetze, wird der Datensatz ohne Probleme eingetragen:

INSERT INTO termin (du_date, du_time, du_name) VALUES (STR_TO_DATE('28.12.2016', '%d.%m.%Y'), STR_TO_DATE('12:06', '%H:%i'), 'Test');

Schicke ich dagegen diesen Befehl per PHP-Skript zur Datenbank

$mysqli->query( $sqlStatement ) or print $mysqli->error);

erhalte ich ein diesen Fehler: Incorrect datetime value: '12:06' for function str_to_date

Wenn ich die Uhrzeit nicht mit übergebe, klappt es auch im Skript.

du_date ist vom Datentyp 'date' und du_time vom Datentyp 'time'.

Kann mir das einer erklären?

Vielen Dank!

  1. Moin,

    [...] Be careful about assigning abbreviated values to a TIME column. MySQL interprets abbreviated TIME values with colons as time of the day. That is, '11:12' means '11:12:00', not '00:11:12'. MySQL interprets abbreviated values without colons using the assumption that the two rightmost digits represent seconds (that is, as elapsed time rather than as time of day). For example, you might think of '1112' and 1112 as meaning '11:12:00' (12 minutes after 11 o'clock), but MySQL interprets them as '00:11:12' (11 minutes, 12 seconds). Similarly, '12' and 12 are interpreted as '00:00:12'. [...]

    https://dev.mysql.com/doc/refman/5.7/en/time.html

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  2. Hi,

    Wenn ich dieses Statement mit Navicat (einem Datenbank-Frontend) an meine Datenbank absetze, wird der Datensatz ohne Probleme eingetragen:

    INSERT INTO termin (du_date, du_time, du_name) VALUES (STR_TO_DATE('28.12.2016', '%d.%m.%Y'), STR_TO_DATE('12:06', '%H:%i'), 'Test');
    

    Schicke ich dagegen diesen Befehl per PHP-Skript zur Datenbank

    $mysqli->query( $sqlStatement ) or print $mysqli->error);
    

    erhalte ich ein diesen Fehler: Incorrect datetime value: '12:06' for function str_to_date

    Wie sieht das Zusammenbauen des $sqlStatement im PHP-Script aus?

    Was ergibt eine Ausgabe von $sqlStatement direkt vor dem Absetzen der Query?

    cu,
    Andreas a/k/a MudGuard