Frontpage Datumsformatierung
Problem mit dem Datum lesen mit Frontpage
Hallo,
Ich hoffe ich bin hier richtig, ich habe ein Problem mit FrontPage.
Ich schreibe mit dem befehl
update.... = getdate() in FP2002 Das Datum in eine SQL Datenbank.
Das funktioniert jetzt sehr gut. Beim ausgeben möchte ich nur das Datum
und nicht die Uhrzeit angezeigt bekommen. Kann mir da jemand weiterhelfen?
Kann ich vielleicht auch nur das Datum in die DB schreiben?
Für eine Hilfe wäre ich euch sehr Dankbar.
mfG
Helmut
Hallo,
Ich hoffe ich bin hier richtig, ich habe ein Problem mit FrontPage.
Ich schreibe mit dem befehl
update.... = getdate() in FP2002 Das Datum in eine SQL Datenbank.
Das funktioniert jetzt sehr gut. Beim ausgeben möchte ich nur das Datum
und nicht die Uhrzeit angezeigt bekommen. Kann mir da jemand weiterhelfen?
Kann ich vielleicht auch nur das Datum in die DB schreiben?
Für eine Hilfe wäre ich euch sehr Dankbar.
mfG
Helmut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 19188
Url: https://administrator.de/forum/frontpage-datumsformatierung-19188.html
Ausgedruckt am: 10.04.2025 um 18:04 Uhr
14 Kommentare
Neuester Kommentar
Hallo Helmut,
da hab ich doch glatt gedacht, Dir könnte ein Frontpage-Kenner was sagen, aber da das nicht der Fall ist, geb ich meinen Senf mal als Datenbänker dazu:
Da gibts im Prinzip drei Möglichkeiten:
1. Nur das Datum abspeichern
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, weil in Datenbanken das Datumsformat halt immer auch die Uhrzeit enthält. Das ist natürlich wenig flexibel dann.
2. Datenbankseitig formatieren beim Auslesen
Anhand des "getdate()" könnte Deine Datenbank ein SQL Server sein, also hier der passende Befehl:
SELECT CONVERT (varchar, Datum, 104) FROM Tabelle
wobei "Datum" das Datumsfeld und "Tabelle" die passende Tabelle ist. Beim SQL Server sind die verschiedenen Datumsformate mit Codes dargestellt, 104 steht für das deutsche Datumsformat (dd.mm.yyyy), 102 für das ANSI-Format (yyyy.mm.dd), 110 für das amerikanische (mm-dd-yyyy). Wenn es eine andere Datenbank ist oder Du andere Formate brauchst, schau mal in die DB-Hilfe unter CONVERT oder Datumsfunktionen o.ä.
3. Formatierung durch Frontpage beim Auslesen:
Und hier muß ich jetzt passen, da ich von Frontpage keine Ahnung habe. Du solltest in der Hilfe/Referenz aber unter Stichwörtern wie z.B. Datumsformat irgendeine Formatierungsmöglichkeit finden.
Gruß, Mad Max
da hab ich doch glatt gedacht, Dir könnte ein Frontpage-Kenner was sagen, aber da das nicht der Fall ist, geb ich meinen Senf mal als Datenbänker dazu:
Da gibts im Prinzip drei Möglichkeiten:
1. Nur das Datum abspeichern
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, weil in Datenbanken das Datumsformat halt immer auch die Uhrzeit enthält. Das ist natürlich wenig flexibel dann.
2. Datenbankseitig formatieren beim Auslesen
Anhand des "getdate()" könnte Deine Datenbank ein SQL Server sein, also hier der passende Befehl:
SELECT CONVERT (varchar, Datum, 104) FROM Tabelle
wobei "Datum" das Datumsfeld und "Tabelle" die passende Tabelle ist. Beim SQL Server sind die verschiedenen Datumsformate mit Codes dargestellt, 104 steht für das deutsche Datumsformat (dd.mm.yyyy), 102 für das ANSI-Format (yyyy.mm.dd), 110 für das amerikanische (mm-dd-yyyy). Wenn es eine andere Datenbank ist oder Du andere Formate brauchst, schau mal in die DB-Hilfe unter CONVERT oder Datumsfunktionen o.ä.
3. Formatierung durch Frontpage beim Auslesen:
Und hier muß ich jetzt passen, da ich von Frontpage keine Ahnung habe. Du solltest in der Hilfe/Referenz aber unter Stichwörtern wie z.B. Datumsformat irgendeine Formatierungsmöglichkeit finden.
Gruß, Mad Max
Hallo Helmut,
wenn Du mit UPDATE in die Datenbank reinschreibst, wirst Du doch mit SELECT die Daten auslesen, oder?
Wenn Du wirklich nur das Datum wegschreiben wolltest (also Möglichkeit 1. von oben), dann würde das ebenso mit dem CONVERT gehen:
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist und Sortierungen dann schlecht sind ("01.01.2005" kommt in der Sortierung vor "02.01.2004"), es sei denn Du verwendest das ANSI-Format (yyyy.mm.dd, Code 102).
Gruß, Mad Max
wenn Du mit UPDATE in die Datenbank reinschreibst, wirst Du doch mit SELECT die Daten auslesen, oder?
Wenn Du wirklich nur das Datum wegschreiben wolltest (also Möglichkeit 1. von oben), dann würde das ebenso mit dem CONVERT gehen:
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist und Sortierungen dann schlecht sind ("01.01.2005" kommt in der Sortierung vor "02.01.2004"), es sei denn Du verwendest das ANSI-Format (yyyy.mm.dd, Code 102).
Gruß, Mad Max
@MadMax
Lässt die DB das denn zu?? Wenn ja, warum???
Wenn die DB schlau ist, merkt die doch, dass da jemand in ein datetime-Feld einen String reinschreiben will.. und schreibt stattdessen immer einen datetime-Wert für "leer" oder eben "01.01.1900". Das kann doch nicht Helmut's Sinnen und Streben sein, oder?
Die SELECT-Konvertierung beim Auslesen dagegen sehe ich genauso.. aber ich kenne Frontpage nicht. Vielleicht kommt man/frau da gar nicht an das Statement selbst zum Editieren ran.
Ist kein Frontpage-Power-User hier im Forum??
Grüße Biber
Lässt die DB das denn zu?? Wenn ja, warum???
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Wenn die DB schlau ist, merkt die doch, dass da jemand in ein datetime-Feld einen String reinschreiben will.. und schreibt stattdessen immer einen datetime-Wert für "leer" oder eben "01.01.1900". Das kann doch nicht Helmut's Sinnen und Streben sein, oder?
Die SELECT-Konvertierung beim Auslesen dagegen sehe ich genauso.. aber ich kenne Frontpage nicht. Vielleicht kommt man/frau da gar nicht an das Statement selbst zum Editieren ran.
Ist kein Frontpage-Power-User hier im Forum??
Grüße Biber
Hm, anscheinend habe ich mich mißverständlich ausgedrückt, aber in beiden Kommentaren von mir sollte zum Ausdruck kommen, daß in dem Fall, daß nur das Datum gespeichert wird, kein datetime-Feld, sondern ein Zeichenfeld (varchar) vorliegen muß.
Kommentar 1:
Kommentar 2:
Also nochmal:
Das interne Datenbank-Datumformat (datetime) beinhaltet auch die Uhrzeit und sie kann nur beim Auslesen durch Formatierung client (Frontpage)- oder server (SQL Server)-seitig abgeschnitten werden. Wird nur das Datum abgespeichert, so wie es später auch angezeigt werden soll, muß ein Zeichenfeld (char, varchar) vorliegen. Entschuldigung, wenn das nicht deutlich rüberkam und zu Verwirrungen geführt hat.
Und tatsächlich ist die Datenbank so schlau und merkt, wenn da ein String in ein Datumsfeld geschrieben werden soll, aber dann findet eine implizite Konvertierung statt. Allerdings liegt im Datumsfeld dann doch wieder eine Uhrzeit vor, nämlich 00:00:00 Uhr
Daß man das SELECT gar nicht explizit angibt, sondern sich irgendwie zusammenklickt habe ich mir auch schon überlegt, aber dann sollte man doch irgendwo auf Eigenschaften oder SQL o.ä. gehen und da was anpassen können. Aber da wäre halt doch ein Frontpageler von Vorteil um das sagen zu können.
Gruß, Mad Max
Kommentar 1:
1. Nur das Datum abspeichern
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, ...
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, ...
Kommentar 2:
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist ...
Also nochmal:
Das interne Datenbank-Datumformat (datetime) beinhaltet auch die Uhrzeit und sie kann nur beim Auslesen durch Formatierung client (Frontpage)- oder server (SQL Server)-seitig abgeschnitten werden. Wird nur das Datum abgespeichert, so wie es später auch angezeigt werden soll, muß ein Zeichenfeld (char, varchar) vorliegen. Entschuldigung, wenn das nicht deutlich rüberkam und zu Verwirrungen geführt hat.
Und tatsächlich ist die Datenbank so schlau und merkt, wenn da ein String in ein Datumsfeld geschrieben werden soll, aber dann findet eine implizite Konvertierung statt. Allerdings liegt im Datumsfeld dann doch wieder eine Uhrzeit vor, nämlich 00:00:00 Uhr
Daß man das SELECT gar nicht explizit angibt, sondern sich irgendwie zusammenklickt habe ich mir auch schon überlegt, aber dann sollte man doch irgendwo auf Eigenschaften oder SQL o.ä. gehen und da was anpassen können. Aber da wäre halt doch ein Frontpageler von Vorteil um das sagen zu können.
Gruß, Mad Max
Hallo Helmut,
vielleicht ist die Verwendung eines berechneten Datenbankfeldes das Richtige für Dich. Das Datum wird ganz normal in die Datenbank als Datumsfeld geschrieben (wie Du es schon vorher gemacht hattest) und ein anderes Feld, das von der Datenbank automatisch gepflegt wird, enthält die formatierte Darstellung. So ein Feld würdest Du mit:
ALTER TABLE Tabelle ADD DatumFormatiert AS (convert (varchar(8), Datum, 4))
in Deine Tabelle einfügen und es enthält dann automatisch das passend formatierte Datum.
Man schreibt also ins Feld Datum mit
UPDATE Tabelle SET Datum = getdate () WHERE ...
beim Auslesen holt man sich aber das Feld DatumFormatiert.
Hat den Vorteil, daß in dem Feld DatumFormatiert zentral das Datumsformat eingestellt ist (und auch schnell geändert werden kann) und das "richtige" Datum ist z.B. zur Verwendung von Sortierungen auch noch vorhanden. Nachteil wäre allerdings auch, daß das Datumsformat zentral eingestellt wird und nicht über irgendwelche Ländereinstellungen beim Benutzer passend angezeigt wird. Ob das also ein Vorteil oder Nachteil ist hängt von den Anforderungen ab. Aber so bekommst Du das ganze auch ohne spezielle Frontpage-Kenntnisse in dem Bereich gebacken.
Gruß, Mad Max
vielleicht ist die Verwendung eines berechneten Datenbankfeldes das Richtige für Dich. Das Datum wird ganz normal in die Datenbank als Datumsfeld geschrieben (wie Du es schon vorher gemacht hattest) und ein anderes Feld, das von der Datenbank automatisch gepflegt wird, enthält die formatierte Darstellung. So ein Feld würdest Du mit:
ALTER TABLE Tabelle ADD DatumFormatiert AS (convert (varchar(8), Datum, 4))
in Deine Tabelle einfügen und es enthält dann automatisch das passend formatierte Datum.
Man schreibt also ins Feld Datum mit
UPDATE Tabelle SET Datum = getdate () WHERE ...
beim Auslesen holt man sich aber das Feld DatumFormatiert.
Hat den Vorteil, daß in dem Feld DatumFormatiert zentral das Datumsformat eingestellt ist (und auch schnell geändert werden kann) und das "richtige" Datum ist z.B. zur Verwendung von Sortierungen auch noch vorhanden. Nachteil wäre allerdings auch, daß das Datumsformat zentral eingestellt wird und nicht über irgendwelche Ländereinstellungen beim Benutzer passend angezeigt wird. Ob das also ein Vorteil oder Nachteil ist hängt von den Anforderungen ab. Aber so bekommst Du das ganze auch ohne spezielle Frontpage-Kenntnisse in dem Bereich gebacken.
Gruß, Mad Max
Hallo Helmut,
so ganz konnte ich jetzt Deinen letzten Ausführungen nicht folgen, weil es nicht ganz korrekt ist, wenn das Datum ein datetime-Feld ist, mit convert (varchar, ...) da reinzuschreiben. Wie weiter oben beschrieben würde dann eine implizite Konvertierung erfolgen und Du hättest die Uhrzeit doch wieder im Datumsfeld stehen (00:00:00 Uhr). Um wirklich das formatierte Datum zu enthalten müßte es also ein varchar-Feld sein.
Mit Deiner angegebenen convert-Funktion ist die Jahreszahl dann auch zweistellig. Das wird in den Umwandlungscodes nämlich dadurch gesteuert, daß die Zahl über 100 ist oder nicht:
4 --> dd.mm.yy
104 --> dd.mm.yyyy
2 --> yy.mm.dd
102 --> yyyy.mm.dd
...
Gruß, Mad Max
so ganz konnte ich jetzt Deinen letzten Ausführungen nicht folgen, weil es nicht ganz korrekt ist, wenn das Datum ein datetime-Feld ist, mit convert (varchar, ...) da reinzuschreiben. Wie weiter oben beschrieben würde dann eine implizite Konvertierung erfolgen und Du hättest die Uhrzeit doch wieder im Datumsfeld stehen (00:00:00 Uhr). Um wirklich das formatierte Datum zu enthalten müßte es also ein varchar-Feld sein.
Mit Deiner angegebenen convert-Funktion ist die Jahreszahl dann auch zweistellig. Das wird in den Umwandlungscodes nämlich dadurch gesteuert, daß die Zahl über 100 ist oder nicht:
4 --> dd.mm.yy
104 --> dd.mm.yyyy
2 --> yy.mm.dd
102 --> yyyy.mm.dd
...
Gruß, Mad Max
Hallo Helmut,
wenn es geht, dann ist es ja in Ordnung. Wobei wir allerdings wieder (fast) am Anfang wären, weil es doch beim Auslesen formatiert wird. Um andere Programme brauchst Du Dir wegen der Systemeinstellungen zum Datumsformat keine Gedanken zu machen. Hier wird nämlich nur die Darstellung geregelt, intern ist bei Datumsangaben das Jahrhundert immer noch dabei.
Gruß, Mad Max
wenn es geht, dann ist es ja in Ordnung. Wobei wir allerdings wieder (fast) am Anfang wären, weil es doch beim Auslesen formatiert wird. Um andere Programme brauchst Du Dir wegen der Systemeinstellungen zum Datumsformat keine Gedanken zu machen. Hier wird nämlich nur die Darstellung geregelt, intern ist bei Datumsangaben das Jahrhundert immer noch dabei.
Gruß, Mad Max
Also,
nicht, dassich Helmut immer im Kreis rumschicken will, aber..
Wenn Du, Helmut, jetzt zur Probe noch ein neues Feld in der Datenbank anlegst, und zwar ein Feld "CDatum", Zeichen, Länge 8 Stellen .. und dort mit
UPDATE Tabelle SET CDatum = CONVERT (varchar(8), DATUM, 104)
..einmalig die bisher gespeicherten Daten reinschreibst ..
und in Zukunft überall dort, wo Du bisher ein INSERT ....CONVERT (varchar(8), DATUM, 104) gemacht hast, dieses auch genau so auf das neue Feld CDatum ausführen lässt, dann sollte doch im Feld CDatum der String "15.11.05" stehen, oder nicht???
Ratlos und wirklich dankbar für Aufklärung meines Denkfehlers
Biber
nicht, dassich Helmut immer im Kreis rumschicken will, aber..
Wenn Du, Helmut, jetzt zur Probe noch ein neues Feld in der Datenbank anlegst, und zwar ein Feld "CDatum", Zeichen, Länge 8 Stellen .. und dort mit
UPDATE Tabelle SET CDatum = CONVERT (varchar(8), DATUM, 104)
..einmalig die bisher gespeicherten Daten reinschreibst ..
und in Zukunft überall dort, wo Du bisher ein INSERT ....CONVERT (varchar(8), DATUM, 104) gemacht hast, dieses auch genau so auf das neue Feld CDatum ausführen lässt, dann sollte doch im Feld CDatum der String "15.11.05" stehen, oder nicht???
Ratlos und wirklich dankbar für Aufklärung meines Denkfehlers
Biber