ASP -» «- Sql-Server Datum
Alex
- asp.net
0 Stefan Falz0 Alex0 Stefan Falz0 Alex
Hallo Zusammen.
Kann mir jemand sagen wie man länderunspezifisch
Datumsformate einstellen kann?
Ist Folgendes: Wenn ich ins ASP Programmiere und Datum vom
Localen Server hole, dann stimmt es meistens nicht mit
dem überein was auf dem SQL-Server (z. B. stored procedures)
liegt. Das hängt davon ab was der SQL-Server für Ländereinstellungen hat und der "Lokalserver".
Es kommt aber noch dicker. Was macht der Client?
Wenn jemand von USA auf meine Applikation zugreife, dann nehme ich
evtl. Auch noch das Datum vom Client.
Kennt einer dieses Problem?
Klar, ich vergleiche die nummerischen Zeichen. Kein Problem.
Das Problem ist: USA hat ein anderes Format als Deutschland.
Deutschladn: DD.MM.YYYY
USA: YYYY-MM-DD (oder so ähnlich, weiss ich nicht genau)
ist auf jeden fall anders.
Meine Frage: Hat schon jemand die Länderspezifikation schon mal ausgetricks? Wie, wo und was muss ich einstellen bzw. Funktionen
einbauen damit es läuft.
Ist etwas lang, doch ich hoffe es ist klar wo der der Hund begraben ist :o).
Gruß und Danke schon mal
Alex
Hallo,
in SQL Server kannst Du in einer Query mit convert([small]datetime, getdate(), 109)
ein Datum konvertieren. Schau einfach in der SQL Server Hilfe nach
der Funktion Convert.
unter Oracle gibt es hierfür TO_CHAR(SYSDATE,'DD.MM.RRRR') oder
TO_DATE('31.12.2999','DD.MM.RRRR'). Welche Funktion verwendet wird,
hängt von Eingabewert ab.
mit den o.a. Funktionen kriegt man fast alle gültigen Datumswerte
in eine einheitliche Form.
Tschau, Stefan
Hi Stefan,
das mit dem Convertieren stimmt. Da hast Du recht. Danke.
Doch es der Hund liegt noch tiefer begraben.
ICh habe so eine Datenbank SQL7 erstellt.
hab dann in einer Tabelle ne Spalte Datum eingefügt.
Datum hat als Defaultwert getdate().
Das Datum erscheint:
18.04.00 14:54:47
soweit so gut.
Wenn ich jetzt aber im ASP ein select-befehl mache,
dann kommt das hier raus:
4/18/00 2:55:00 PM
irgendwo ist der Hund ..na Du weiss schon :o)
Hab schon probiert den user mit unterschiedlichen Language
auszustatten. Bringt aber immer das selbe. Regional Settings sind auch schon auf Deutsch. Aber wie Du siehst ist das Ergebnis in Englisch.
hat der IIS irgendwo noch eine Ländereinstellung?
Gruß
Alex
Das Datum erscheint:
18.04.00 14:54:47
soweit so gut.
Wenn ich jetzt aber im ASP ein select-befehl mache,
dann kommt das hier raus:4/18/00 2:55:00 PM
Hallo,
mit dem IIS hat das nichts zu tun. Dern SQL Server kann man auch auf
Deutsch einstellen. Aber ganz allgemein würde ich sagen, daß man
eher auf folgendes Konstrukt zurückgreifen sollte:
<%
SQL = "SELECT convert(datetime, d_date, format) FROM Tabelle"
%>
d_date ist Dein Datumsfeld, format ist deine gewünschte Formatmaske.
Wenns gar nicht anders geht, schreib dir doch einfach eine Funktion,
die dir das Datum in der gewünschten Form zurückgibt:
<%
Private Function FormatDate(InputDate)
If IsDate(InputDate) Then
FormatDate = Day(InputDate) & "." & Month(InputDate) & "." & Year(InputDate)
Else
FormatDate = Day(Date) & "." & Month(Date) & "." & Year(Date)
End if
%>
Aufgerufen wird die Funktion dann folgendermaßen:
<%=FormatDate(objRS.Fields("d_date")) %>
Tschau, Stefan
Hi Stefan,
gut das es Dich gibt :o)
Also das mit der eigene Komponente ist getan.
Habe hier eine DLL mit der ich das Datum in die allgemeine Form
umwandeln kann. jetzt ist nur die Frage, macht er es auf allen
Plattformen gleich.
Also testen ist angesagt.
Kannst Du mir sagen was für Datumsformate es so gibt.
z.B. dd.mm.yyyy
oder mm.dd.yyyy
oder dd-mm-yyyy
oder dd/mm/yyyy
oder yyyy/mm/dd
usw.
ich möchte wissen wie universel diese Komponente ist.
Ob alle Datumsformate richtig in die universelle Form:
{d 'yyyy-mm-dd'}
umgewandelt werden.
Schreib mir mal alle Formate die Du kennst bitte auf.
Merci für die Hilfe
Gruß
alex
Hi,
Schreib mir mal alle Formate die Du kennst bitte auf.
Ich sehe nicht, wohin Dich das führen soll. (Es gibt beliebig viele.)
Welches Format Du am Ende haben willst, das sollte doch klar sein. (Wenn Du ein sinnvolles haben willst, dann nimm offizielles ISO-Format.)
Und genau in diesem Format solltest Du das Datum auch schon aus der Datenbank holen.
Konvertierungsfunktionen wie die von Stefan genannte "to_char" mit *einer* Dir genehmen (!) Formatmaske sind genau dafür da, daß Deine gesamte Problematik in nichts zusammenfällt: Dadurch solltest Du auf Programmiersprachenebene mit einem Dir genehmen Format arbeiten können und Dich eben gerade *nicht* darum kümmern müssen, was welche Datenbank intern für proprietäres Gruselwusel veranstaltet ...
mfg - Michael