helmuthelmut2000
Goto Top

Datum wird falsch aus DB-Feld ausgegeben

Hallo,

Ich hab da mal wieder ein "kleines" Problem.

Ich schreibe in eine MSSQL2000 DB ein Datum mit Uhrzeit.
Mit einem PHP Formular. Da schreibe ich (convert(varchar(120),getdate(),13)).
In der DB ist das dann Richtig geschrieben (z.b. 23.01.2007 23:11 ).
Aber wenn ich es dann über PHP ausgebe dann sieht das so aus:

23 01 2007 23:11PM

Woran kann das denn liegen?


Danke.

Helmut

Content-Key: 54337

Url: https://administrator.de/contentid/54337

Printed on: April 23, 2024 at 19:04 o'clock

Member: Biber
Biber Mar 18, 2007 at 17:42:16 (UTC)
Goto Top
Moin helmuthelmut2000,

das liegt daran, dass diese doofen Computer gehässigerweise einfach das machen, was Du ihnen sagst...

[Ach, wenn meine Kinder doch so wären.*seufz*]

(convert(varchar(120),getdate(),13))
--> bringt genau wie gewünscht die Anzeige "dd mon yyyy hh:mi:ss:mmm 17 Mär 2007 18:45:00:130"

Was Du aber haben willst, ist eigentlich die Kombination :

(convert(varchar(120),getdate(),104) ) & " " & (convert(varchar(120),getdate(),108) )
--> "17.03.2007" ...... & " " &............."18:45:00"
Es gibt kein Standard-SQL-Datumsformat mit exakt Deinem Anzeigeformat.
Wenn Dir der DB-Inhalt netterweise so angezeigt wird, okay. Aber die Convert-Function kann es von Haus aus nicht.

Gruss
Biber
Member: helmuthelmut2000
helmuthelmut2000 Mar 18, 2007 at 18:25:38 (UTC)
Goto Top
Hallo,

Ja das habe ich auch schon ausprobiert.
Aber leider gehts nicht.
Wenn ich das Feld abrufe mit PhP dann schreibt er mir immer:

17 02 2007 7:17PM

Egal ob ich (convert(varchar(120),getdate(),13)) oder
(convert(varchar(120),getdate(),104) ) & " " & (convert(varchar(120),getdate(),108) )

schreibe.

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Mar 18, 2007 at 21:45:50 (UTC)
Goto Top
Hallo,

Am besten ich schreib euch mal wie ich das mach.
Ich habe ein Formular da erstelle ich im Hintergrund eine Tabelle mit Spalten so:

CREATE TABLE Tabellenname
Spalte..,
Spalte..,
Datum DATETIME NULL DEFAULT ((convert(varchar(120),getdate(),13))),

Dann,

Habe ich eine Seite wo ich die Daten auslese mit PHP so:

select * from Tabellenname

" . $dsatz["Datum"] . "

und da schreibt er mir egal ob ich ...getdate(),13))) oder ...getdate(),104)))

immer das Datum und Uhrzeit so: 17 02 2007 10:35PM.

Ich hoffe ich habe mich da Richtig ausgedrückt, ich habe da nähmlich ein
bischen ein problem damit das ich das immer so schreibe das man das
Versteht.

Gruß
Helmut
Member: Biber
Biber Mar 19, 2007 at 06:35:59 (UTC)
Goto Top
Hmmm, helmuthelmut2000,

kann ich weder gedanklich reproduzieren und (mangels installierter mySQL-Datenbank) auch nicht praktisch.

Als Theoretiker kann ich nur sagen:
das hier ist IMHO BullShit suboptimal:
CREATE TABLE Tabellenname
Spalte..,
Spalte..,
<b>Datum DATETIME NULL DEFAULT ((convert(varchar(120),getdate(),13))),</b>
Das Create-Statement bezieht sich auf eine Datenbanktabelle und auf Datentypen.
Der Datentyp ist DateTime.
Also sollte reichen:
...
CREATE TABLE Tabellenname
Spalte..,
Spalte..,
Datum DATETIME NOT NULL [WITH DEFAULT]
Und selbst das "With Default" sollte obsolet sein.

Jedes halbwegs professionielle RDMS sollte dieses DDL-Statement so interpretieren, dass ein Feld namens "Datum" mit Datentyp DateTime angelegt wird und jeden neu angelegten Datensatz mit dem Timestamp der Anlege-Zeit füllen.

Und aus den folgenden zwei Zeilen kann ich nichts erkennen. Soll das ein Lied werden?
select * from Tabellenname
" . $dsatz["Datum"] . "

Bitte poste nochmal die relevanten Auslesezeilen en bloc - so kann es ja nicht vollständig sein.
Es sei denn, die allgemeine Syntax hätte sich durch HipHop- und NeoTrance-Einflüsse in den letzten Monaten stark gewandelt.

Gruss
Biber