Announcement

Collapse
No announcement yet.

Unbekanntes Datum konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unbekanntes Datum konvertieren

    Hallo,

    ich habe in einer Tabelle eines MS SQL Servers 2005 eine Datumsspalte gefunden, die ich nicht auslesen kann, da mir das Format völlig unbekannt ist.

    Die Spalte selber ist vom Typ "float". Hier ein paar Zeilen dieser Spalte:

    40070,5766974074
    40070,5136206944
    40070,5647084722

    Die Datumswerte müssten alle vom selben Tag sein und dem Zeitraum "September 2009" entspringen.

    Ich habe es erfolglos mit dem Standardverfahren probiert:
    [highlight=c#]
    string strZeitStempel = tblClients.Rows[i]["creationtime"].ToString();
    DateTime.TryParse(strZeitStempel, out datReport);
    [/highlight]

    Hat jemand eine Idee, wie ich aus der Spalte Datum und Uhrzeit extrahieren kann?

  • #2
    Hallo,

    das ist kein Standarformat.

    ich habe in einer Tabelle eines MS SQL Servers 2005 eine Datumsspalte gefunden
    Frag bei dem nach der die Tabelle erstellt hat


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Im SQL Server werden Datetimes als Tage seit dem 01.01.1900. Das ist intern ein Float. Die Nachkommastellen lassen sich als Tagesanteil interpretieren.

      Dein erster Wert wäre zum Beispiel der 16.09.2009 kurz vor 14.00 Uhr.-

      Code:
      SELECT  CAST(CAST('40070.5766974074' AS Float) AS Datetime)
      Ich würde die Umrechnung wie im Beispiel von der Datenbank machen lassen die weiß am besten über ihr Format Bescheid.

      Das so abzulegen ist aber sinnfrei. Ich würde jemanden suchen und ihm die Ohren langziehen.

      Comment


      • #4
        Im SQL Server werden Datetimes als Tage seit dem 01.01.1900. Das ist intern ein Float.
        Hab ich auch noch nicht gewusst - Danke für den Hinweis


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          ... und ist so auch nicht richtig. MS-SQL unterscheidet zwischen vielen verschiedenen Date- und Time-Werten. Ab 01.01.1900 zählt smalldatetime; ein datetime ist unter 2005 und 2008 unterschiedlich definiert. Siehe die Übersicht auf MSDN: Datums- und Uhrzeitdatentypen

          Gruß Jürgen

          Comment


          • #6
            .. und ist so auch nicht richtig.
            Lass uns darauf einigen das es nicht die ganze Wahrheit ist

            Bei den im SQL Server 2005 benutzten Datumstypen(sowohl datetime als auch smalldatetime) entspricht die float 0 dem 01.01.1900. Das ein gültiger Datetime auch vor dem 01.01.1900 liegen kann hat damit nichts zu tun floats können negativ sein.

            Was die neuen Datentypen im 2008er betrifft kann ich keine Aussage treffen.
            Wer Lust hat(und eine 2008er DB) kann ja denn in meinem Posting oben aufgeführten Cast mal testweise für uns Ausführen und schauen was da raus kommt.

            Comment


            • #7
              Wer Lust hat(und eine 2008er DB) kann ja denn in meinem Posting oben aufgeführten Cast mal testweise für uns Ausführen und schauen was da raus kommt.
              2009-09-16 13:50:26.653


              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #8
                @Gü: Das das für Datetime funktioniert bin ich von ausgegangen. Könntest du das mal mit datetime2 probieren? Oder war das schon datetime2?

                Comment


                • #9
                  Das oben war datetime.

                  Für datetime2:
                  Meldung 529, Ebene 16, Status 2, Zeile 2
                  Die explizite Konvertierung des float-Datentyps in datetime2 ist nicht zulässig.


                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment


                  • #10
                    Danke Gü.

                    Comment


                    • #11
                      Der Cast mit dem String

                      SELECT CAST(creationtime AS Datetime) AS datum FROM clients

                      war erfolgreich.

                      SUPER - vielen Dank für die informative Diskussion!

                      Comment

                      Working...
                      X