Announcement

Collapse
No announcement yet.

T-SQL Problem mit datetime

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

  • T-SQL Problem mit datetime

    Hi Leute!

    Ich muss mir aus einer Datenbank Daten mit einer sp in eine andere Datenbank kopieren. Dieses Funktioniert auch soweit nur ich muss in der SP aus 2 datetimes ein datetime machen. Ich brauche von datetime1 nur den Datumsbereich und vom datetime2 den Zeitbereich. Wie mache ich dieses am besten? Meine momentane lösung:
    Code:
    CONVERT(datetime, SUBSTRING(CONVERT(varchar, 
    T_Fa.Std_Datum), 1, 10) + SUBSTRING(CONVERT(varchar, 
    T_Unterricht.Beginn), 11, 10))
    Desweiternen muss ich das selbe nochmal machen wobei ich aber prüfen muss ob Ende kleiner oder Gleich Beginn ist. dazu hier meine lösung:
    Code:
    (CASE WHEN T_Unterricht.Beginn <= T_Unterricht.Ende
    THEN (CONVERT(datetime, (Substring(CONVERT(varchar, T_Fa.Std_Datum), 1, 10) 
    + Substring(CONVERT(varchar, T_Unterricht.Ende), 11, 10)))) 
    ELSE (CONVERT(datetime, (Substring(CONVERT(varchar, T_Fa.Std_Datum), 1, 10) 
    + Substring(CONVERT(varchar, DATEADD(day, 1, T_Unterricht.Ende)), 11, 10)))) END)
    Achso nur noch für euch zur kenntnis die aufrufe finden alle in einem Select stat, da das Select mit einem INSERT verschaftelt ist.

    MfG
    blind1985

  • #2
    Man kann das Datum auch in ein float verwandeln und da mit arbeiten, ich glaube aber nicht, dass das irgendwelche Vorteile gegenüber deiner Version hat. TSQL ist in dieser Beziehung immer noch etwas schwach (mit SQL2008 sollte das dann besser sein, da gibt es DATE und TIME getrennt).

    also einfach nur als Beispiel:

    declare @d1 smalldatetime, @d2 smalldatetime
    select @d1 = '20080423 10:00', @d2 = '20090117 18:44'
    select cast(floor(cast(@d1 as float)) + (cast(@d2 as float) - floor(cast(@d2 as float))) as smalldatetime)
    -- ergibt '2008-04-23 18:44:00'

    bye,
    Helmut

    Comment


    • #3
      Hi hwoess!

      Ich habe leider aber nur Server 2005 zur verfügung werde aber mail deine version testen

      Comment

      Working...
      X