Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

DateDimension SQL SCRIPT

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von SSanna, 7 November 2016.

  1. SSanna

    SSanna Neuer Benutzer

    Hallo liebe Leute, ich habe ein SQL Script von einer Webseite um ein DataWarehouse zu erstellen.
    Es funktioniert auch alles nur habe ich mit einem Script ein Problem.

    Ich bekomme folgenden Fehler:

    Meldung 242, Ebene 16, Status 3, Zeile 157
    Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.

    Das Script habe ich im Anhang hinzugefügt.

    Vielen Dank schon ein Mal.

    Liebe Grüße,

    Sunny
     

    Anhänge:

  2. akretschmer

    akretschmer Datenbank-Guru

    was ist jetzt die exakte Frage?

    Offenbar versuchst Du, einen Text in einen Timestamp umzuwandeln. Offenbar enthält dieser Text einen Wert, der nicht umwandelbar ist - wie z.B. einen 30. Februar oder eine 27. Stunde oder eine 96. Minute.
     
  3. SSanna

    SSanna Neuer Benutzer


    Meine Frage ist wie ich das Problem Lösen kann
     
  4. akretschmer

    akretschmer Datenbank-Guru

    • Datensatz löschen
    • Datensatz korrigieren

    wähl Dir was aus.
     
  5. SSanna

    SSanna Neuer Benutzer

    Korrigieren wäre wohl angebracht aber ich komme nicht weiter alleine
     
  6. akretschmer

    akretschmer Datenbank-Guru

    identifiziere zuerst die fehlerhaften Daten.
     
  7. akretschmer

    akretschmer Datenbank-Guru

    vermutlich wird Deine nächste Frage sein, wie.

    Nun, mit M$SQL kenne ich mich nicht so wirklich aus, hier mußt Du selber sehen, was da geht. Vielleicht so, daß Du die fehlerhaften Daten erst einmal als TEXT einliest und dann versuchst, diese zu konvertieren. Demo mit PostgreSQL:

    Code:
    test=*# \d ssanna ;
      Tabelle »public.ssanna«
     Spalte | Typ  | Attribute
    --------+------+-----------
     t  | text |
     d  | date |
    
    \d: überflüssiges Argument »;« ignoriert
    test=*# select * from ssanna ;
      t  | d
    ------------+---
     2016-01-01 |
     2016-02-30 |
     2016-03-30 |
    (3 Zeilen)
    
    test=*# update ssanna set d = t::date;
    FEHLER:  Datum/Zeit-Feldwert ist außerhalb des gültigen Bereichs: »2016-02-30«
    test=*#
    
    Das ist offensichtlich richtig und ein Hinweis darauf, welcher Datensatz falsch ist.
     
    Walter gefällt das.
  8. Chuky666

    Chuky666 Datenbank-Guru

    Moin moin,

    also allein wenn ich mir so eine Codezeile in dem Script anschaue: CONVERT(DATETIME, '12/31/' + CONVERT(VARCHAR, DATEPART(YY, Getdate()))) AS FirstDayOfYear
    :confused:

    Schau dir einfach mal das Script genauer an dann wirst du feststellen das es mehr als suboptimal ist.

    Schau dir mal das Snippet an, damit solltest du weiterkommen ;)

    SELECT
    DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) AS StartOfYear,
    DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) AS LastDayOfYear,
    DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, 0) AS FirstOfNextYear,
    DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, 0)) AS LastTimeOfYear
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden