Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Arithmetic overflow error converting expression to data type datetime

Mitglied: Praktikantin

Praktikantin (Level 1) - Jetzt verbinden

02.07.2008, aktualisiert 03.07.2008, 7115 Aufrufe, 5 Kommentare

Hallo Leute,

ich habe dieses SQL Query:



select p.*,s.up_inv_id, s.GLN_delivery,s.inv_type, s.inv_seq, s.inv_number,s.invoice_date, s.status
into #cancelling_invoices
from up_status as s
inner join #partners as p
on dbo.remove_lead_zeros(s.afm_sender) = dbo.remove_lead_zeros(p.sender_afm)
and dbo.remove_lead_zeros(s.afm_retailer) = dbo.remove_lead_zeros(p.retailer_afm)
where CONVERT(varchar(8)month(invoice_date) = case
when datepart(m,getdate()) between 2 and 12
then datepart(m,getdate())-1
when datepart(m,getdate()) = 1
then 12
end
and year(invoice_date) =case
when datepart(m,getdate()) between 2 and 12
then datepart(yyyy,getdate())
when datepart(m,getdate()) = 1
then datepart(yyyy,getdate())-1
end
and status = 'Cancelling invoice'-- or status = 'No invoice lines in file')
--and inv_type in ('31','32','33','34')
--and up_inv_id <> 0
order by p.sender_name,retailer_name,sender_afm,retailer_afm


Bis vor 2 Monaten lief alles normal, aber jetzt kommt der Fehler:

Server: Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type datetime.
The statement has been terminated.


Invoice_date ist ein nvarchar(8). Jetzt läuft es nicht mehr und auch der ganze Job nicht . Wie gesagt, bis vor kurzem lief alles ganz normal. Hat da jemmand eine Idee?

Vielen dank

Julia
Mitglied: Biber
02.07.2008 um 18:32 Uhr
Moin Praktikantin,

Invoice_date ist ein nvarchar(8)
... in dem alle möglichen Prosatexte drinstehen können, so z.B. "1.4." , "Ostern" oder "32.45.2008"

dann prüfe doch zuerst den Inhalt des invoice-"date"-Feldes separat (unabhängig von dieser Query) auf Datenqualität. Also darauf, in wie vielen Fällen ein Nicht-In-Datumswerte-übersetzbarer Wert darin steht.

Danach druckst Du das Datenmodell auf einem DIN A0-Plotter aus, rollst es sorgfältig ganz eng zusammen, schiebst ins Innere eine Stahlrute und haust das ganze demjenigen um die Ohren, der das Datumsfeld als varchar(8) angelegt hat.

Grüße
Biber
Bitte warten ..
Mitglied: Praktikantin
02.07.2008 um 18:58 Uhr
Hallo Biber,

da hast Du recht!!!! Deine Ratschläge sind Gold Wert!!!! Diese Datenbank ist wirklich schlimm!! Fast alle Felder sind nvarchar. Sogar die Preise und Prozente. Daran muss es wohl liegen. Jemmand hat einen Falschen Wert eingeben, deswegen läuft das Query erst einmal und nach 2-3 kommt dieser Fehler. Soll ich das Invoice_date mit cast als Datetime konvertieren? Danke nochmal.

Viele Grüße

Julia
Bitte warten ..
Mitglied: Biber
02.07.2008 um 19:54 Uhr
Moin Praktikantin,

Fast alle Felder sind nvarchar. Sogar die Preise und Prozente..
Noch mal eine Kopie des Datenmodells auf DIN A3 drucken.
Diesmal Baseballschläger statt Stahlrute.
Soll ich das Invoice_date mit cast als Datetime konvertieren?
*seufz*.... wozu?? Das hilft doch nur von einer Query heute nachmittag zur nächsten Query morgen früh...

--> Da musst Du - und zwar BEVOR irgendein Depp dieses zusammengeschlamperte Gebilde produktiv setzen will DRINGENDST konsolidieren (lassen). Numerische Werte in varchar()-Feldern sind von der Geschwindigkeit grenzwertig und Datumswerte in einem Lyrik-Feld sind fast schon Sabotage. Das kostet Zeit und Geld, selbst wenn die Queries ohne Abbrüche laufen würden. Performance. CPU-Zeit. Timeouts. Mitarbeiter, die eine DB-Abfrage starten und dann erstmal einen Kaffee aufsetzen. Mails und Faxe mit :"Sacht ma, ist Eure Datenbank offline?" usw usw.

Die Möglichkeiten OHNE Redesign/Konsolidierung/Datentyp-Anpassung sind schnell aufgezählt:

  • die ganzen "falschen" nvarchar()-Felder so lassen: dann muss aber irgendeine GUI bei der Eingabe/beim Datenimport die Datenqualität sicherstellen. Auf deutsch: Muss programmiert werden. (Und da würde es bei mír aussetzen, wenn ein Java/PHP-Coder dann eine Methode schreiben soll mit "ist der Monat auch zwischen 1 und 12" und "sind die Tage im Februar kleiner als 30" und wann haben wir Schaltjahre"? Dat is schon erfunden.... dafür gibt es Datums-Datentypen)
  • Du kannst über alle (physischen) Tabellen (1:1) Views legen, in denen die Datentypen (jeden gottverdammten Tag aufs Neue) gecastet werden und hast dadurch keine Abbrüche mehr in den Queries, die diese Views verwenden-
  • oder - schlechteste Möglichkeit, weil nicht pflegbar und Stückwerk: Du kannst so wie jetzt in irgendwelchen auffällig gewordenen Queries ein bisschen punktuell rumcasten. (ist absoluter Dreck, so eine Arbeitsweise)

---> Lass es eskalieren! Wenn das DB-Design so unbrauchbar ist, dann MUSS eine strukturelle Anpassung erfolgen.
Wenn sie Dich feuern und Du rothaarig bist, kannst Du auch...

Grüße
Biber
Bitte warten ..
Mitglied: Praktikantin
02.07.2008 um 20:16 Uhr
Ok, hast ja Recht. Ich denke fürs erste werde ich ein paar views benutzen. Ich werde unserem Vorgesetzten darauf hinweisen. Hast Recht die Querys dauern immer sehr lange und nichts läuft wie es soll. Ausserdem wird Mapforce (das schlimmste Tool überhaupt) zum importieren benutzt... Ich werde mich wohl selbst feuern...
Danke für alles

Julia, mit den Braunen Haaren
Bitte warten ..
Mitglied: Praktikantin
03.07.2008 um 15:51 Uhr
Hallo Biber,

Deine Tipps sind wirklich Gold Wert!!!!! Ich kann Dir einfach nicht genug danken!!!! Ich habe ein View erstellt und dann lief das Query!!! Du bist die Nummer 1!! Ich habe das alles unserem Vorgesetzten erzählt, aber alle sind wohl zu faul.... Na ja, danke für alles!!!!

Viele liebe Grüße

Julia
Bitte warten ..
Ähnliche Inhalte
Entwicklung
SQL GROUP BY Convert Datetime
gelöst Frage von StfnCstrEntwicklung4 Kommentare

Hallo Zusammen, ich sitze schon seit gefühlten Stunden an nem Script, ist wahrscheinlich sehr simpel, jedoch seh ich den ...

Batch & Shell
Hilfe bei findstr reg expression
gelöst Frage von TheUntouchableBatch & Shell5 Kommentare

Hallo liebe Admins, ich bräuchte Hilfe beim erstellen einer reg expression mit findstr: Aus folgender Textdatei sollen nur die ...

Entwicklung

Benötige Hilfe bei Regular Expression

gelöst Frage von Thomas91Entwicklung6 Kommentare

Hallo, ich benötige hilfe bei einem Regularen Ausdruck: dieser sollte wenn möglich ohne /ig auf zwei Zeilen einen treffer ...

Windows 7

C:ProgramData-Application Data-Application Data-Application Data-Application Data-Application Data

Frage von crashi09Windows 74 Kommentare

Hallo, habe folgendes Problem an einem Win 7 Pro 32Bit Rechner wie oben zusehen wird dieser Ordner immer wieder ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 15 StundenHumor (lol)3 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 1 TagSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 1 TagMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten13 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...