Datum in MySQL schreiben
AnoNym NeoDym
- php
Hallo Forum,
wie muss ich einen Ausdruck wie "2012-06-03" oder "2000-6-3" in PHP formatieren, damit er in ein Datumsfeld einer SQL-Datenbank geschrieben werden kann?
Danke.
Hi,
wie muss ich einen Ausdruck wie "2012-06-03" oder "2000-6-3" in PHP formatieren, damit er in ein Datumsfeld einer SQL-Datenbank geschrieben werden kann?
Warum liest du das nicht im MySQL-Handbuch nach?
Dort sind die gültigen Datumsformate doch beschrieben.
MfG ChrisB
Warum liest du das nicht im MySQL-Handbuch nach?
Dort sind die gültigen Datumsformate doch beschrieben.
$abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";
mysql_query($abfrage);
echo mysql_error();
führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00. Man darf die Anführungsstriche nicht vergessen. Außerdem werden führende Nullen benötigt.
Tach!
$abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";
führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.
Ist ja auch vollkommen gültige Syntax.
Man darf die Anführungsstriche nicht vergessen.
Irgendwie muss man ja das Minus zwischen den Zahlen einmal als Subtraktionen und ein anderes Mal als Datumsbestandteiltrenner unterscheiden können.
Außerdem werden führende Nullen benötigt.
Diese Aussage ist nicht richtig.
dedlfix.
Außerdem werden führende Nullen benötigt.
Diese Aussage ist nicht richtig.
$abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-03-12')";
fügt das Datum richtig ein,
$abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-3-12')";
führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.
ano
Tach!
Außerdem werden führende Nullen benötigt.
Diese Aussage ist nicht richtig.
$abfrage = "INSERT INTO gkind (gdatum) VALUES ('2007-3-12')";
führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.
Bei mir nicht. Auch laut Handbuch sollte das nicht passieren: For values specified as strings that include date part delimiters, it is unnecessary to specify two digits for month or day values that are less than 10. (ungefähr in der Mitte der verlinkten Seite)
Abgesehen davon ist es natürlich ein leichtes, wenn du den Wert formatieren lässt, das Formatzeichen für führende Nullen zu verwenden.
dedlfix.
Hello,
$abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";
mysql_query($abfrage);
echo mysql_error();
>
> führt ohne Fehlermeldung zu einem Datumswert von 0000-00-00.
Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. <http://de2.php.net/manual/en/function.mysql-error.php>
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Hallo Tom,
Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. http://de2.php.net/manual/en/function.mysql-error.php
ja, genau. Augen auf im Straßenverkehr: ;-)
$abfrage = "INSERT INTO gkind (gdatum) VALUES (2007-03-12)";
mysql_query($abfrage);
echo mysql_error();
Ist doch alles da ...
\*scnr\*
Martin
--
Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hello Ingrid,
ja, genau. Augen auf im Straßenverkehr: ;-)
echo mysql_error();
Ist doch alles da ...
Hab ich vor lauter buntem Code einfach übersehen... Ich bitte um Verzeihung ;-O
Woran liegts, dass keine Fehlermeldung kommt? Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
Woran liegts, dass keine Fehlermeldung kommt?
An der Default-Konfiguration, bei der MySQL ungültige Datumswerte zu '0000-00-00' ändert. Kann man irgendwo umstellen, denke ich.
Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?
dedlfix.
Hello,
Woran liegts, dass keine Fehlermeldung kommt?
An der Default-Konfiguration, bei der MySQL ungültige Datumswerte zu '0000-00-00' ändert. Kann man irgendwo umstellen, denke ich.
Ohne Stringbegrenzer wird der Ausdruck vermutlich ausgerechnet werden. Aber daraus folgt dann nach MySQL-Systax immer noch eine numerische Größe. Dass die nicht zu einer Spalte mit Datumstyp passt, müsste die SQL-Schnittstelle des DBMS doch eigentlich merken können?
Danke für den Link.
Das ist mir schon wieder viel zu viel Automatik. Da entstehen eigentlich immer mehr Fehlermöglichkeiten, als vermieden werden können.
Aber ob man irgendwo das Verhalten bezüglich Datenwerten konfigurieren kann, werde ich nochmal verfolgen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Wie hast Du denn den SQL-Status abgefragt? Von alleine schlägt der bei PHP nicht durch, du musst ihn schon selber auswerten. http://de2.php.net/manual/en/function.mysql-error.php
Ich hab hinterher in die Datenbank gekuckt. mysql_error hat nichts angezeigt.
ano