Alex: ASP -» «- Sql-Server Datum

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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