• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Deutsche Formatierung bei Date() aus Datenbank

Hi,

bei phpmyadmin ist mit in der Strktur keine Möglichkeit bewusst in der ich für den Feldtyp date() eine Formatierung wie (j,M,y) angeben kann.

Im Code der Seite kenne ich z.B. bei aktuellem Datum die Angabe date(j,M,y). Doch ich möchte kein aktuelles Datum haben sondern ein Datum aus einer Datenbank heraus holen.
Kann ich also $row->Datum(j,M,y) angeben. Oder wird dann das Feld nicht gefunden?
 
Werbung:
Werbung:
Du hast die Anführungszeichen vergessen.

Code:
DATE_FORMAT($row->Datum, '%e %M %y')

Und dann kann man, damit es schicker aussieht, auch noch Punkte ergänzen:
Code:
DATE_FORMAT($row->Datum, '%e.%M.%y')
 
Ich glaube Du hast kein wirkliches SQL-Statement definiert. Du versuchst eine PHP-Funktion mit gleichem Namen auszuführen.

Das machst Du:
Code:
 DATE_FORMAT($row->Datum, '%e %M %y')

Das wäre das was Du (vermutlich) willst:
PHP:
$result = mysql_query("SELECT DATE_FORMAT(".$row->Datum.", '%e %M %y')");
 
Werbung:
Hallo,

nee nicht um echo sondern im select, also bei der Datenbank abfrage.

Code:
SELECT *,date_format(Datum, '%d.%m.%Y') as Datum from TABELLENAMEN
und dann normal ausgabe.
Code:
$row->Datum

Cheffchen

EDITE: hätte nicht Kaffee hollen sollen, threadi war schneller.
:O( wisso prüft das Forum das nicht selber wie andere Foren :O(
 
Hallo,

nee nicht um echo sondern im select, also bei der Datenbank abfrage.

Code:
SELECT *,date_format(Datum, '%d.%m.%Y') as Datum from TABELLENAMEN
und dann normal ausgabe.
Code:
$row->Datum

Cheffchen

EDITE: hätte nicht Kaffee hollen sollen, threadi war schneller.
:O( wisso prüft das Forum das nicht selber wie andere Foren :O(

macht nichts... mit der Aussage ist wirklich die Erleuchtung gekommen. Denn ja ... ich habe die ganzen formatangaben (auch in der Beschreibung) immer auf das Echo bezogen und nicht auf die Abfrage (SELECT).
Ist das bei allen Formatierungen egal wann und für welchen Feldtypen so was eingesetzt werden soll immer auf den Select bezogen zu verstehen?
 
Der Link von mir ging auf die Seite der Dokumentation von mysql, es geht also ausschlieslich um die Abfrage. Alle weiteren Infos die du brauchst findest du auf dieser Seite.
 
Werbung:
Ach, und wegen deiner Aussage die Beschreibung der Frage bezöge sich auf die PHP Ausgabe:
Doch ich möchte kein aktuelles Datum haben sondern ein Datum aus einer Datenbank heraus holen.
Kann ich also $row->Datum(j,M,y) angeben. Oder wird dann das Feld nicht gefunden?
Das klingt für mich danach, als ob du die von mysql erhaltenen Werte bei der Abfrage umwandeln willst.

Du kannst natürlich auch das Datum in einen Timestamp umwandeln und dann mit PHP formatieren.
 
sorry für das Missverständinss.


<?php
date_default_timezone_set("Europe/Berlin");
$monate = array (
"Jan" => "Jan.",
"Feb" => "Feb.",
"Mar" => "März",
"Apr" => "April",
"Mai" => "Mai",
"Jun" => "Juni",
"Jul" => "Juli",
"Aug" => "Aug.",
"Sep" => "Sep.",
"Oct" => "Okt.",
"Nov" => "Nov.",
"Dec" => "Dez."
);
$M = $monate[date('M')];
?>

Ich habe mir dies Array abgeschaut und wollte es anwenden um die deutsche Abk. für die Monate zu verwenden.
Doch leider wird das Feld $row->Datum nun nicht erkannt.

$ergebnis = mysql_query("SELECT *,date_format(Datum, '%d.') .$M. date_format(Datum, '%Y.') as Datum FROM History...

Wie muss ich bei dieser Zeile den Aufruf richtig einbauen so das die Werte aus dem Array für den Monat verwendet werden können?
 
Bei deinem letzten Code-Schnippsel fügst Du das Array an sich in das SQL-Statement ein. MySQL erhält also dieses SQL-Statement

Code:
SELECT *,date_format(Datum, '%d.') .[COLOR="red"]Array[/COLOR]. date_format(Datum, '%Y.') as Datum FROM History..

was natürlich nicht funktionieren kann.

Bedenke: SQL gibt nur Infos aus einer Datenbank aus. Du kannst nicht innerhalb eines SQL-SELECT-Statements PHP-Variablen- oder Arrays verwenden bei denen ein Wert aus MySQL für die Ausgabe wichtig ist. Sowas

Code:
SELECT *,date_format(Datum, '%d.') .$M[$m]. date_format(Datum, '%Y.') as Datum FROM History..

geht nicht.

Den Monat musst Du folglich in der Ausgabe einfügen, nicht in dem SQL-Statement selbst.

PHP:
$result = mysql_query("SELECT *,date_format('Y') as jahr, date_format('b') as monat, date_format('d') as tag FROM History");
$row = $mysql_fetch_rows($result);
echo $row["tag"].".".$M[$row["monat"]].".".$row["jahr"];
 
Werbung:
Hallo,

XXXX
@threadi war schneller oder ich zu langsam, deswegen gelöscht :O)
XXX

Warte mal das geht doch auch ohne sql.
Code:
$ergebnis = mysql_query("SELECT * FROM History...
Ausgabe
Code:
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo strftime("%A den %d.%B.%Y", strtotime($row->Datum));

Das habe ich so im einsatz.
Da wird aus Datenbank Datum "2099-12-31" das "Montag den 31.Dezember.2099"
Aber vorsicht wenn das Local mit Xampp testest da muss xampp richtig eingestelt werden, was ich leider noch nie geschaft habe :O).
Bei mir Online auf Server alles richtig Deutsch, Local Englisch.

Cheffchen
 
von der Methode mit stftime() hatte ich auch gelesen.
Aber da ich ja nach der Entwickung alles auf den Server schiebe. Und nicht mehr auf Local arbeite. Dachte ich mir dann kann ich die Localen-Informationen doch nicht mehr beeinflußen.

Also verstehe ich das richtig.
Wenn ich das Datum aus der Datenbank mit SQL hole dann kann ich nicht mittels des arrys die deutsche Abk. einbauen.

mist...
 
Werbung:
Hallo,

nicht ganz, du brauchst die nicht mehr in Deutsch umbauen das passiert automatisch durch "setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');" da weis der Sever ah du willst Deutsch und dann wird Deutsch Angezeigt (Wochentag, Monat).
Bei dem Beispiel mach ich nichts mit array
Da wird aus Datenbank Datum "2099-12-31" das "Montag den 31.Dezember.2099"

Backe das doch mal in eine PHP Datei und schau was rauskommt.
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo strftime("%A den %d.%B.%Y", strtotime('2011-04-12'));

Cheffchen
 
Hallo,

wieder nee :O)
Im Select machst nichts, da wird nichts Formatiert, da ist nur SELECT * FROM.
Das Ergebnis sieht ja echt supie aus und auch noch in Deutsch wie gewohlt.

Da brauchst jetzt bloss so ändern das er das datum aus der DB nimmt.
PHP:
echo strftime("%A den %d.%B.%Y", strtotime('$row->Datum'));
und jetzt kannst das datum wie wild Formatieren strftime Fomatierung
zb so
PHP:
echo strftime("%d.%B.%Y", strtotime('$row->Datum'));
oder oder im Link stehen ja gengent kürzel mit erklärung die auch kombinieren kannst.

Cheffchen
 
Werbung:
wiedersprüchliche Werte

Danke ich hatte das nach etwas probieren sogar herausbekommen wie ich es wo einsetzen muss.

Doch die Tabelle nach der Tabelle von eben und von gestern (in der deutschen Fassung) zum Tag ohne führende Null ich habe schon einiges probiert doch entweder kommt nichts

%E müsste eigentlich 1 ... 31 geben.

auch der englische Wert %j (deu und eng unterscheiden sich jedoch) gibt mir hier nicht was ich suche.
 
Hallo,

ich sag mal so, Bahnhof?
tabelle nach tabelle, deutsche fassung?

%E gibt es nicht oder habe ich nicht in der gelingten Seite gefunden nur %e für Tag (Wertebereich ´ 1´ bis ´31´)

Cheffchen
 
Zurück
Oben