PHP und MSSQL Datetime

kesnw

Erfahrenes Mitglied
Hi,

ich nutze eine MSSQL DB und in einer meiner Tabellen möchte ich das Änderungsdatum der Zeilen speichern (Datentyp datetime). Das funktioniert soweit auch. Wenn ich das Datum aber auslese, dann möchte ich nur das Datum und nicht die Uhrzeit anzeigen lassen. Wie geht das? In der DB steht z.B. 24.05.2005 und die Ausgabe ist dann komischerweise "2005-05-04 00:00:00".

1. Warum wird das nicht in dem Format ausgegeben wies in der DB steht?
2. Wie bekomme ich es hin nur das Datum ausgeben zu lassen?

Die Datentypen in MSSQL bringen mich noch zur Weißglut.. MySQL ist da weitaus verständlicher....
 
Du kannst doch das Datum kopmplett in eine Variable lesen und diese dann mit substr aufteilen...

Hab das mal so gemacht in einem Skript von ir.

$jahr=substr($row[8],0,4);
$monat=substr($row[8],5,2);
$tag=substr($row[8],8,2);
$uhrzeit=substr($row[8],11,8);

Vielleicht hilft das ja weiter, ist aber bestimmt nicht die sauberste Lösung...
 
Ok, hört sich gut an. Hab nun aber einen error im Select:

Die Spalte in der das Datum stehet heißt "change_date"

PHP:
$result['module3_fill'] = "SELECT deadline, quantity, quality, date_format(change_date, '%Y-%m-%d') AS cd FROM ratios WHERE number = '".$_GET['number']."'";

In den Beispielen wird nie der Spaltenname, sondern ein Wert angegeben, was ja vollkommen unlogisch ist...
 
Zuletzt bearbeitet:
Habe folgendes gefunden:

PHP:
$result['module3_fill'] = "SELECT deadline, quantity, quality, convert(datetime,convert(char(10),change_date,104)) as cd FROM ratios WHERE number = '".$_GET['number']."'";

Jetzt wird 1900-01-01 00:00:00.000 ausgegeben. Super :(
 
Hallo,

also wenn es Tatsächlich so (24.05.2005) in der DB steht - warum gibst du dann nicht einfach den Inhalt aus.
Also:
PHP:
$ausgabe = mysql_fetch_assoc($dbabfrage);
echo $ausgabe['spaltenname-datum'];

Ich würde dir aber empfehlen das ganze als MYSQL-DATE oder DATETIME in die SQL-Tabelle zu speichern.

Du könntest dann eine Abfrage wie diese hier "basteln":
PHP:
$abfrage = mysql_query("SELECT datum, DATE_FORMAT( datum, 'd.%m.%Y' ) AS datumneu FROM deinetabelle WHERE 1");
oder so ähnlich.

Das ganz könntest dann mit folgendem Code ausgeben:
PHP:
$row = mysql_fetch_assoc($abfrage);
echo $row['datumneu'];

Also ich habe jetzt mal auf die While-Geschichte usw. verzichtet - auch müsstest du natürlich deine SQL-Abfrage noch auf deine bedürfnisse verfeinern.

Ausserdem würde ich dir MySQL-Datums- und Zeitfunktionen ans Herz legen
 
Wer lesen kann, ist klar im Vorteil.

Nochmal: Der Autor hat ein Problem, welches nur in mSsql auftritt!
Also im Microsoft SQL-Server und nicht mySQL :)
 
Habs jetzt mal mit date() von PHP versucht, also:

PHP:
echo $module3_fill->change_date;
echo "<br>";
echo date("Y-m-d",$module3_fill->change_date);

Ausgabe:
2005-01-01 00:00:00
1970-01-01

 
Zurück