Announcement

Collapse
No announcement yet.

Wie bekomme ich nur die Uhrzeit in Datetime-Feld (MS SQL 200)?

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

  • Wie bekomme ich nur die Uhrzeit in Datetime-Feld (MS SQL 200)?

    Hallo,

    ich habe das Problem, dass ich einzelne Uhrzeiten in eine Tabelle einfügen muss. Jedoch setzt der MS SQL 2000-Server vor die Uhrzeit automatisch den '01.01.1900'. Kann ich das irgendwie umgehen?
    D.h. aus '0:15' bekomme ich '1900-01-01 00:15:00'

    Mit einem Datum alleine funktioniert es.

    Hat jemand einen Tip für mich?

    Danke.
    Gruss
    Thorsten

  • #2
    Hallo,

    über die <b>DATEPART</b>-Funktion kann eine SELECT-Abfrage nur bestimmte Bestandteile zurückliefern. Das Prinzip wird deutlich, wenn man die folgenden T-SQL-Aufrufe im <i>Query Analyzer</i> einmal durchlaufen lässt:
    <pre>
    DECLARE @mydatetime DATETIME
    DECLARE @myms int
    DECLARE @myss int
    DECLARE @mymi int
    DECLARE @myhh int
    DECLARE @mydd int
    DECLARE @mymm int
    DECLARE @myyyyy int
    SET @mydatetime=getdate()
    SET @myms = DATEPART(ms,@mydatetime)
    SET @myss = DATEPART(ss,@mydatetime)
    SET @mymi = DATEPART(mi,@mydatetime)
    SET @myhh = DATEPART(hh,@mydatetime)
    SET @mydd = DATEPART(dd, @mydatetime)
    SET @mymm=DATEPART(mm,@mydatetime)
    SET @myyyyy = DATEPART(yyyy, @mydatetime)
    SELECT @myyyyy AS 'Year', @mymm AS 'Month', @mydd AS 'Day of month',
    @myhh AS 'Hour', @mymi AS 'Minute', @myss AS 'Second',
    @myms AS 'Millisecond'
    </pre>
    P.S: Es gibt keine separaten Uhrzeit- und Datumstypen zum ausschließlichen Speichern von Uhrzeit- oder Datumsdaten. Wenn nur eine Uhrzeit beim Festlegen von datetime oder smalldatetime angegeben wird, wird das Datum standardmäßig auf den 1. Januar 1900 eingestellt. Falls nur ein Datum angegeben wird, wird die Uhrzeit standardmäßig auf 12:00 A.M. (Mitternacht) festgelegt

    Comment


    • #3
      Danke für die Antwort. Dann muss ich leider doch Textfeld für die Uhrzeit verwenden.<br>

      Gruss<br>
      Thorste

      Comment


      • #4
        Hallo,

        warum? Wo liegt das Problem (Anzeige oder Berechnung)

        Comment


        • #5
          MSSQL Datetime

          Hallo,

          Ich habe zu dem Theme Datetime eine Frag:

          In meiner Datenbank habe ich ca. 200 Datensätze, wobei eine Spalte die Uhrzeit darstellen soll.

          01.01.1900 00:45:15
          01.01.1900 00:46:16
          01.01.1900 01:45:15
          ...

          So nun will ich aber alle Uhrzeiten addieren, so dass ich am ende folgendes Ergebnis habe

          02.16.46 (Fall ich mich nicht verrechnet habe^^)

          Ich komme zwar an jede einzelne Zeit heran (Stunden oder Minuten) aber ich bekomme sie dann nicht so addiert, das er Automatisch erkennt 60 nicht 60 Minuten sind sonder 1 h.

          Auf jeden fall wenn ich mir die einzelnen werte hole, dann sind das ja Zahlen werte und die gehen nicht bis 60 sondern bis 100.

          Kennt jemand eine Methode wie man das Berechnen kann, oder kann mir jemand einen Tipp geben wie ich daran gehen soll.

          mfg

          Seby

          ps. MSSQL-Express 2005
          Zuletzt editiert von Seby-Deluxe; 09.04.2007, 18:32.

          Comment


          • #6
            Hallo,

            da der SQL Server 2005 verwendet wird, kann man eine CTE in der Lösung für diese Aufgabe verbauen:

            Code:
            USE tempdb
            GO
            
            SET LANGUAGE GERMAN
            GO
            
            CREATE TABLE TestTbl
            (
              id   INT      NOT NULL IDENTITY PRIMARY KEY,
              zeit DATETIME NOT NULL
            )
            GO
            INSERT INTO dbo.TestTbl (zeit) VALUES ('01.01.1900 00:45:15');
            INSERT INTO dbo.TestTbl (zeit) VALUES ('01.01.1900 00:46:16');
            INSERT INTO dbo.TestTbl (zeit) VALUES ('01.01.1900 01:45:15');
            GO
            
            -- a) Alle Zeitangaben in Sekunden umrechnen 
            -- b) Die Summe der Sekundenwerte bilden
            -- c) Anzahl der Sekunden in Stunden, Minuten und Sekunden umrechnen 
            WITH CTE AS (
              SELECT SUM(
              (DATEPART(hh,zeit) * 3600) + 
              (DATEPART(mi,zeit) * 60) + 
              DATEPART(ss,zeit)) AS Sekunden 
            FROM dbo.TestTbl
            )
            SELECT DATEADD(ss, Sekunden, '01.01.1900') FROM CTE
            GO

            Comment


            • #7
              Hallo Andreas Kosch,

              vielen Dank für deine Antwort.

              ch bin echt nicht auf die Idee gekommen die Zeitwerte in Sec. zu berechnen ich hatte immer gedankengänge mit( Reche es in Stunden) na ja einen Denfehler hat hehe.

              Aber nochmals viellen Dank für die Hilfe.

              ach und das mit CTE kannte ich nicht.

              mfg

              Seby

              Comment

              Working...
              X