Tag des Jahres

Huan90

Benutzer
Beiträge
22
Hallo liebe Forengemeinde,

mit:
SET
@Datum = CAST(getdate() as int);


SET
@JD = datepart(dy, @Datum);

Möchte ich gerne den "Tag des Jahres" (heute 240) berechnen lassen.
Das funktioniert soweit auch.

Darüber hinaus habe ich eine Laufende Nummer die bei jedem Aufruf der SP, die auch den Tag des Jahres bekommt, inkrementiert wird.
Um 00:00Uhr allerdings, soll die Laufende Nummer zurückgesetzt werden.

Deswegen schrieb ich folgendes:


IF (@JD <>(select [JD_RESET] from [dbo].[R02_LFD_NUM]))

BEGIN

update [dbo].[R02_LFD_NUM] set [JD_RESET] = @JD;

update [dbo].[R02_LFD_NUM] set [LFD_NUM_TEID] = 0;

END

(dazu sei gesagt: in R02_LFD_NUM im Feld JD_RESET (gibt nur einen Datensatz in der Tabelle) steht der Tag des Jahres und soll, ebenfalls um 00:00 Uhr geändert (inkrementiert) werden.)


Nun scheint es allerdings so, als wenn die Bedingung für das IF schon um 12:00 Uhr zutrifft...


Ich habe in bezug auf Datenbanken noch nie mit Triggern gearbeitet, nutze den MS SQL-Server 2012 und gehe einfach mal davon aus, dass man soetwas eleganter lösen kann als mit dem "eh schon vorhandenem JulianDate".^^
 
Werbung:
Ok, der Fehler liegt bei der Konvertierung in Integer. Datetime-format ergibt auch mehr Sinn, ich ging allerdings davon aus, dass datepart() ein int braucht (hatte ich so in irgendeinem Forum gefunden).

Es ist mir langsam echt unangenehm, dass ich hier nur Threats zum Löschen erstelle (oder doch eher, dass ich ständig solch blöde Fehler produziere?)...

LG Huan90
-closed-(?)
 
Also bei der INT Konvertierung musst du aufjedenfall aufpassen da der Zeitanteil in den Nachkommastellen landet. Ich glaube es wird immer abgerundet, aber du hast das Problem ja schon erkannt. (Läßt sich ja auch gut testen.)

Mit dateadd() könntest du auch einfach eine Sekunde abziehen (negativer Wert in dateadd()) um zum Ziel zu kommen. Außerdem würde ich @JD gar nicht an die SP übergeben sondern von der SP mit berechnen lassen. Scheint mir viel simpler, aber vieleicht hast du einen guten Grund.
 
Werbung:
Einen guten Grund...
Mittlerweile ist es tatsächlich wieder sinnvoll das von der SP machen zu lassen.

Ich versuche meine ganzen Funktionen/SPs so sepparat wie möglich zu erstellen,
da dieses System (Datenbank, WebFrontend, SPS- und SAP-Kommunikation) am Ende in 12 verschiedenen Varianten ausgerollt werden soll.
Um hinterher so wenig wie möglich anpassen zu müssen, sollen alle Funktionen die bei allen Systemen gleich sind, möglichs sepparat sein. (komplett objektorientiert dauert leider zu lange :/)

Danke für den Hinweis, aber immerhin habe ich so gelernt, wie ich einen Rückgabewert von einer SP bekomme^^ :)

LG Huan90
 
Zurück
Oben