helmuthelmut2000
Goto Top

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.

Content-Key: 165265

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

Printed on: April 25, 2024 at 03:04 o'clock

Member: SlainteMhath
SlainteMhath Apr 27, 2011 at 14:03:14 (UTC)
Goto Top
Moin,

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

lg,
Slainte
Member: helmuthelmut2000
helmuthelmut2000 Apr 27, 2011 at 14:16:38 (UTC)
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
Mitglied: 48507
48507 Apr 27, 2011 at 15:17:30 (UTC)
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() ?
Member: Biber
Biber Apr 27, 2011 at 17:18:21 (UTC)
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
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 06:55:33 (UTC)
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.
Member: nxclass
nxclass Apr 28, 2011 at 07:56:04 (UTC)
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' );  
Member: SlainteMhath
SlainteMhath Apr 28, 2011 at 08:14:03 (UTC)
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
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 08:22:32 (UTC)
Goto Top
Hallo,

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

Notice: Undefined index: Datum in C:\Apache2\htdocs
Member: Biber
Biber Apr 28, 2011 at 08:24:42 (UTC)
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
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 08:25:37 (UTC)
Goto Top
Hallo nxclass,

Da kommt dann der Fehler:

Parse error: syntax error, unexpected T_LNUMBER in C:\Apache2\htdocs
Mitglied: 48507
48507 Apr 28, 2011 at 08:30:58 (UTC)
Goto Top
Kenne Microsoft-SQL nicht, aber vielleicht bedeutet WHERE Name einfach nur WHERE Name!='' face-smile
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 08:36:56 (UTC)
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
Mitglied: 48507
48507 Apr 28, 2011 at 08:45:57 (UTC)
Goto Top
Rechts vom Datum ist eine Klammer zu viel.
Member: Biber
Biber Apr 28, 2011 at 08:48:08 (UTC)
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]
Member: SlainteMhath
SlainteMhath Apr 28, 2011 at 08:55:57 (UTC)
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
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 09:24:31 (UTC)
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>";
Member: SlainteMhath
SlainteMhath Apr 28, 2011 at 09:26:31 (UTC)
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
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 09:33:09 (UTC)
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.
Member: SlainteMhath
SlainteMhath Apr 28, 2011 at 09:36:17 (UTC)
Goto Top
Wie sollte der select..... dann ausschauen?

hm? hab ich das nicht vor einer guten halebn stunde schon gepostet? *kopfschuettel*
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 10:02:32 (UTC)
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.
Member: helmuthelmut2000
helmuthelmut2000 Apr 28, 2011 at 12:17:39 (UTC)
Goto Top
Hallo,

Ich habs hingekriegt.

Danke.
Member: Biber
Biber Apr 28, 2011 at 13:33:47 (UTC)
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