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

  • Seby-Deluxe
    replied
    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

    Leave a comment:


  • Andreas Kosch
    replied
    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

    Leave a comment:


  • Seby-Deluxe
    replied
    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.

    Leave a comment:


  • Andreas Kosch
    replied
    Hallo,

    warum? Wo liegt das Problem (Anzeige oder Berechnung)

    Leave a comment:


  • Thorsten Haus
    replied
    Danke für die Antwort. Dann muss ich leider doch Textfeld für die Uhrzeit verwenden.<br>

    Gruss<br>
    Thorste

    Leave a comment:


  • Andreas Kosch
    replied
    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

    Leave a comment:

Working...
X