Announcement

Collapse
No announcement yet.

Unterschiede datetime bei Select und Insert ???

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

  • Unterschiede datetime bei Select und Insert ???

    Hallo zusammen,

    folgendes SQL
    Code:
    insert into dbo.AUTOINDEX 
    select DWDOCID,
              DATEADD(second, dbo.f_convert_to_base10(substring(DATEINAME,7,6), 36), '01.01.1970'),
              DATEINAME
    from dwdata.dbo.TESTAUTOINDEX
    where DATEINAME is not null
    liefert
    1 Mai 19 2008 6:57AM ABLAGEK13SNOHB.TIF

    folgender Code
    Code:
    select DWDOCID,
              DATEADD(second, dbo.f_convert_to_base10(substring(DATEINAME,7,6), 36), '01.01.1970'),
              DATEINAME
    from dwdata.dbo.TESTAUTOINDEX
    where DATEINAME is not null
    liefert
    1 19.05.2008 06:57:24 ABLAGEK13SNOHB.TIF

    Der Unterschied ist im datetime Format, aber warum !!!

    Im Insert soll das gleiche datetime Format wie bei dem Select stehen.

    Gruß

    H. Blum
    Zuletzt editiert von h.blum; 06.05.2009, 16:49.

  • #2
    Seit wann liefert ein INSERT Daten wie ein SELECT? So gesehen stimmt meiner Ansicht nach etwas in der Fragestellung nicht.

    Aber du kannst ja angeben, wie du das Datum sehen willst. Probiere mal:

    select DWDOCID,
    CONVERT(varchar,DATEADD(second, dbo.f_convert_to_base10(substring(DATEINAME,7,6), 36), '01.01.1970'), 112),
    DATEINAME from dwdata.dbo.TESTAUTOINDEX where DATEINAME is not null

    ... da solltest du 20080519 als Datum sehen (der dritte Parameter vom CONVERT() bestimmt das).

    bye,
    Helmut

    Comment


    • #3
      Also,

      wenn ich mit dem ersten SQL arbeite, dann wird in die Zieltabelle das datetime geschrieben, was ich nicht haben will ( Zielspalte ist varchar(25) ).

      Wenn ich das gleiche Select wie im Insert benutze, aber alleine ausführe,
      dann kommt das datetime, wie ich es haben will ( 19.05.2008 06:57:24 ).

      Woher kommt dieser Unterschied ???

      Verwendete Software ist Toad für SQL Server 4.1.0.226

      Gruß

      H. Blum

      Comment


      • #4
        Woher kommt dieser Unterschied ???
        Das zweite SQL liefert Dir ein DateTime-Typen als Ergebnis, die Anzeige erfolgt gemäß den Ländereinstellungen an Deinem Rechner bzw. die vom Frontend, wenn die die Formatierung nach eigenen Vorgaben vornimmt.

        Das erste SQL konvertiert implizit ein DateTime in ein VarChar und da dabei keine Formatierungsangaben gemacht werden (wegen implizit nicht gemacht werden können), wird die Ländereinstellungen vom SQL Server verwendet.

        Zur Verdeutlichung:
        [highlight=SQL]SELECT GetDate(), -- DateTime-Typ
        CONVERT(varchar, GetDate()), -- wie implizit
        CONVERT(varchar, GetDate(), 112), -- ISO
        CONVERT(varchar, GetDate(), 104) + ' ' +
        CONVERT(varchar, GetDate(), 108) --DE[/highlight]
        Ergebnis:
        [highlight=code]2009-05-07 11:19:53.467
        Mai 7 2009 11:19AM
        20090507
        07.05.2009 11:19:53[/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X