helmuthelmut2000

Nur das Datum aus einer MSSQL DB ausgeben.

Hallo,

Ich habe folgendes Problem.
Ich habe in einer MSSQL DB ein Datumsfeld mit datetime.
Da möchte ich mit PHP aus dem Datum das jetzt so angezeigt wird:

19 04 2011 12:00AM

Nur das Datum z.B. so:

19.04. oder
19.04.11

anzeigen.

Kann mir da jemand weiterhelfen?

Danke.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 165265

Url: https://administrator.de/forum/nur-das-datum-aus-einer-mssql-db-ausgeben-165265.html

Ausgedruckt am: 15.05.2025 um 19:05 Uhr

SlainteMhath
SlainteMhath 27.04.2011 um 16:03:14 Uhr
Goto Top
Moin,

Kann mir da jemand weiterhelfen?
Die PHP dokumentation vielleicht? DateTime::format

lg,
Slainte
helmuthelmut2000
helmuthelmut2000 27.04.2011 um 16:16:38 Uhr
Goto Top
Hallo,

Da komm ich nicht so richtig zurecht.

Ich hab das so:

Connect auf die Datenbank.
Dann,

$abfrage = mssql_query("select * from Ergebnisse WHERE Name ");

while ($dsatz = mssql_fetch_assoc($abfrage))
{
echo "<td'>" . $dsatz["Datum"] . "</td>";
}

mssql_close()

Ergebnisse = DB-Tabelle
Name = Spaltenname
Datum = Spaltenname mit datetime

Und in dem Feld Datum sollte nur das Datum ohne Uhrzeit erscheinen.
so: 19.04.

Ich hoffe das ist verständlicher.

Danke
48507
48507 27.04.2011 um 17:17:30 Uhr
Goto Top
Ich würde es gleich in der SQL-Abfrage miterledigen, MSSQL kennt viele Date-Funktionen: http://msdn.microsoft.com/en-us/library/ms186724.aspx

Versuch mal:

SELECT *, CONVERT(VARCHAR(8), getdate(Datum), 4) AS [DD.MM] from Ergebnisse WHERE Name;

Eventuell ohne getdate() ?
Biber
Biber 27.04.2011 um 19:18:21 Uhr
Goto Top
Moin spytnik,

er braucht ja nur als einziges Feld das Feld namens "Datum".
Ich nenne es mal im Selectstatement "SeinDatumsfeld", sonst finden wir es nie wieder

Also sollte reichen
Select LEFT(  CONVERT(VARCHAR(8), SeinDatumsfeld), 4) , 5) AS DDMM from Ergebnisse WHERE  .....

Aufgedröselt:
  • CONVERT(VARCHAR(8), SeinDatumsfeld), 4) ---> liefert als VarChar der Länge 8 Zeichen die String-Repräsentation von SeinDatumsfeld im Format 4 [deutsches Datumsformat ohne Jahrhundertangaben = dd.mm.jj].
  • d.h. bei einem SeinDatumsfeld-Inhalt vom 1.Mai 2011 steht als Zwischenergebnis der Varchar-String "01.05.11" rum.
  • von diesem Varchar-String "01.05.11" will er nur LEFT( "01.05.11", 5) = die ersten 5 Zeichen
  • AS DDMM unter dem Name DDMM, damit er dann was mit $dsatz["DDMM"] ansprechen kann.

Wie immer alles ungetestet.

P.S. @helmuthelmut2000.
Für das Benennen eines datetime-Feldes mit dem sprechenden Namen "Datum" gibt es Punktabzug in der B-Note.

Wenn ich irgendetwas an Datenbanktabellen hassen gelernt habe, dann sind es Tabellen ohne nähere Dokumentation und einer Struktur
ID  ID not null,
TEXT Varchar(100) nullable
DATUM date nullable
NUMBER number nullable

Grüße
biber
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 08:55:33 Uhr
Goto Top
Hallo biber,

Ich hab das jetzt mal so versucht:

$abfrage = mssql_query("Select LEFT( CONVERT(VARCHAR(8), Datum), 4) , 5) AS DDMM from Ergebnisse WHERE Name );

Dann bekomme ich die Fehlermeldung:

Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe von ')'. (severity 15) in C:\Apache2\htdocs

Was passt den da noch nicht?

Danke.
nxclass
nxclass 28.04.2011 um 09:56:04 Uhr
Goto Top
... da scheint nur ein " zu fehlen.

besser schreib es in '
$abfrage = mssql_query( 'Select LEFT( CONVERT(VARCHAR(8), Datum), 4) , 5) AS DDMM from Ergebnisse WHERE Name' );  
SlainteMhath
SlainteMhath 28.04.2011 um 10:14:03 Uhr
Goto Top
Der fehlt kommt vom SQL Server, nicht von PHP. Das ")" vor ",4" ist zuviel.

Ich find's trotzdem immer wieder toll, wenn leute einfach mit copy&paste arbeiten anstatt sich mit den Befehlen auseinander zu setzen - deswegen gibts von mir kaum noch vorgekaute Lösungen.

Nix für ungut face-smile
Slainte
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 10:22:32 Uhr
Goto Top
Hallo,

Wenn ich das ")" vor der ",4" wegmache dann kommt der Fehler:

Notice: Undefined index: Datum in C:\Apache2\htdocs
Biber
Biber 28.04.2011 um 10:24:42 Uhr
Goto Top
Moin helmuthelmt2000,

zusätzlich zu dem fehlenden Anführungszeichen würde ich mal die Sinnhaftigkeit der WHERE-Klausel überprüfen.

Eine Bedingung "...WHERE Name" erscheint mir ....ungewöhnlich.

Grüße
Biber
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 10:25:37 Uhr
Goto Top
Hallo nxclass,

Da kommt dann der Fehler:

Parse error: syntax error, unexpected T_LNUMBER in C:\Apache2\htdocs
48507
48507 28.04.2011 um 10:30:58 Uhr
Goto Top
Kenne Microsoft-SQL nicht, aber vielleicht bedeutet WHERE Name einfach nur WHERE Name!='' face-smile
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 10:36:56 Uhr
Goto Top
Hallo Biber,

Ich hab mal das "WHERE Name" ganz raus gemacht.
Geht aber auch nicht.

Wenn ich:

$abfrage = mssql_query("select * from Ergebnisse ");

mach dann kommen alle Datum und Uhrzeiten.

Bei:
$abfrage = mssql_query( 'Select LEFT( CONVERT(VARCHAR(8), Datum), 4) , 5) AS DDMM from Ergebnisse' );

kommt dieser Fehler:
Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe von ')'. (severity 15) in C:\Apache2\htdocs
48507
48507 28.04.2011 um 10:45:57 Uhr
Goto Top
Rechts vom Datum ist eine Klammer zu viel.
Biber
Biber 28.04.2011 um 10:48:08 Uhr
Goto Top
Moin helmuthelmut2000,

und wenn du die Klammer-Zu nach "Datum" weglässt?
$abfrage = mssql_query( 'Select LEFT( CONVERT(VARCHAR(8), Datum, 4) , 5) AS DDMM from Ergebnisse' );

...únd ich sach noch "...ungetestet"..

Grüße
Biber
[Edit] Upps, spytnik, deinen Kommentar hatte ich nicht gelesen vorher [/Edit]
SlainteMhath
SlainteMhath 28.04.2011 um 10:55:57 Uhr
Goto Top
Ich kaufe ein "SUBSTRING" und möchte Lösen face-smile

SELECT SUBSTRING(CONVERT(VARCHAR(8), Datum,4),1,5) AS DDMM from Ergebnisse

So ein Blick in die Doku wirkt wunder *hust* face-smile
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 11:24:31 Uhr
Goto Top
Hallo,

Da kommt der Fehler:

Notice: Undefined index: Datum in C:\Apache2\htdocs.. on line 47

line 47 ist aber die Zeile wo man ich das hab:

echo "<td'>" . $dsatz["Datum"] . "</td>";
SlainteMhath
SlainteMhath 28.04.2011 um 11:26:31 Uhr
Goto Top
Zitat von @helmuthelmut2000:
Hallo,

Da kommt der Fehler:
Notice: Undefined index: Datum in C:\Apache2\htdocs.. on line 47
Das oist kei n Fehler, sondern ein Hinweis.

line 47 ist aber die Zeile wo man ich das hab:
echo "<td'>" . $dsatz["Datum"] . "</td>";
Jo, das Feld das du mit dem Select abrufst nennt sich auch DDMM und nicht Datum
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 11:33:09 Uhr
Goto Top
Hallo,

Danke Danke.

Jetzt gehts.

Kannst du mir auch noch schreiben wie das eine saubere sache gibt?

Ich habe das jetzt so:

$abfrage = mssql_query("select * from Ergebnisse WHERE Name");

Und in meiner Tabelle ist das so:

echo "<td class='td11>" . $dsatz["Name"] . "</td>";
echo "<td class='td12>" . $dsatz["Vorname"] . "</td>";
echo "<td class='td13 tdcenter'>" . $dsatz["DDMM"] . "</td>";

Wie sollte der select.....
dann ausschauen?

Danke.
SlainteMhath
SlainteMhath 28.04.2011 um 11:36:17 Uhr
Goto Top
Wie sollte der select..... dann ausschauen?

hm? hab ich das nicht vor einer guten halebn stunde schon gepostet? *kopfschuettel*
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 12:02:32 Uhr
Goto Top
Hallo,

Noch was,

Wie macht man das wenn man 2 Unterschiedliche Felder hat?

z.B. 1.Feld Datum sollte so aussehen: 01.05.
2.Feld Datum2 sollte so aussehen: 01.05.11

Danke.
helmuthelmut2000
helmuthelmut2000 28.04.2011 um 14:17:39 Uhr
Goto Top
Hallo,

Ich habs hingekriegt.

Danke.
Biber
Biber 28.04.2011 um 15:33:47 Uhr
Goto Top
Moin helmuthelmut2000,

Zitat von @helmuthelmut2000:
Hallo,

Ich habs hingekriegt.

Danke.
Du weisst, dass zwar ich bei deartigen Rückmeldungen relativ abgeklärt reagiere, aber vielleicht der eine oder die andere,
die sich an der gemeinschftlichen Lösungsfindung beteiligt haben, etwas angefasst reagieren könnte?

Wenn wir hier mit gefühlten 10 Leuten an einer Lösung rumschrauben und dann kommt abschliessend "Hey, ich weiss jetzt wie es geht. Schönen Nachmittag." .... face-sad

Grüße
Biber